1 : <?php
2 : /**
3 : * Smarty Internal Plugin Templateparser
4 : *
5 : * This is the template parser.
6 : * It is generated from the internal.templateparser.y file
7 : * @package Smarty
8 : * @subpackage Compiler
9 : * @author Uwe Tews
10 : */
11 :
12 : /**
13 : * This can be used to store both the string representation of
14 : * a token, and any useful meta-data associated with the token.
15 : *
16 : * meta-data should be stored as an array
17 : */
18 1 : class TP_yyToken implements ArrayAccess
19 : {
20 : public $string = '';
21 : public $metadata = array();
22 :
23 : function __construct($s, $m = array())
24 : {
25 0 : if ($s instanceof TP_yyToken) {
26 0 : $this->string = $s->string;
27 0 : $this->metadata = $s->metadata;
28 0 : } else {
29 0 : $this->string = (string) $s;
30 0 : if ($m instanceof TP_yyToken) {
31 0 : $this->metadata = $m->metadata;
32 0 : } elseif (is_array($m)) {
33 0 : $this->metadata = $m;
34 0 : }
35 : }
36 0 : }
37 :
38 : function __toString()
39 : {
40 0 : return $this->_string;
41 : }
42 :
43 : function offsetExists($offset)
44 : {
45 0 : return isset($this->metadata[$offset]);
46 : }
47 :
48 : function offsetGet($offset)
49 : {
50 0 : return $this->metadata[$offset];
51 : }
52 :
53 : function offsetSet($offset, $value)
54 : {
55 0 : if ($offset === null) {
56 0 : if (isset($value[0])) {
57 0 : $x = ($value instanceof TP_yyToken) ?
58 0 : $value->metadata : $value;
59 0 : $this->metadata = array_merge($this->metadata, $x);
60 0 : return;
61 : }
62 0 : $offset = count($this->metadata);
63 0 : }
64 0 : if ($value === null) {
65 0 : return;
66 : }
67 0 : if ($value instanceof TP_yyToken) {
68 0 : if ($value->metadata) {
69 0 : $this->metadata[$offset] = $value->metadata;
70 0 : }
71 0 : } elseif ($value) {
72 0 : $this->metadata[$offset] = $value;
73 0 : }
74 0 : }
75 :
76 : function offsetUnset($offset)
77 : {
78 0 : unset($this->metadata[$offset]);
79 0 : }
80 : }
81 :
82 : /** The following structure represents a single element of the
83 : * parser's stack. Information stored includes:
84 : *
85 : * + The state number for the parser at this level of the stack.
86 : *
87 : * + The value of the token stored at this level of the stack.
88 : * (In other words, the "major" token.)
89 : *
90 : * + The semantic value stored at this level of the stack. This is
91 : * the information used by the action routines in the grammar.
92 : * It is sometimes called the "minor" token.
93 : */
94 : class TP_yyStackEntry
95 1 : {
96 : public $stateno; /* The state-number */
97 : public $major; /* The major token value. This is the code
98 : ** number for the token at this stack level */
99 : public $minor; /* The user-supplied minor token value. This
100 : ** is the value of the token */
101 : };
102 :
103 : // code external to the class is included here
104 :
105 : // declare_class is output here
106 : #line 12 "internal.templateparser.y"
107 : class Smarty_Internal_Templateparser#line 109 "internal.templateparser.php"
108 1 : {
109 : /* First off, code is included which follows the "include_class" declaration
110 : ** in the input file. */
111 : #line 14 "internal.templateparser.y"
112 :
113 : // states whether the parse was successful or not
114 : public $successful = true;
115 : public $retvalue = 0;
116 : private $lex;
117 : private $internalError = false;
118 :
119 : function __construct($lex, $compiler) {
120 : // set instance object
121 343 : self::instance($this);
122 343 : $this->lex = $lex;
123 343 : $this->compiler = $compiler;
124 343 : $this->smarty = $this->compiler->smarty;
125 343 : $this->template = $this->compiler->template;
126 343 : if ($this->template->security && isset($this->smarty->security_handler)) {
127 335 : $this->sec_obj = $this->smarty->security_policy;
128 335 : } else {
129 9 : $this->sec_obj = $this->smarty;
130 : }
131 343 : $this->cacher = $this->template->cacher_object;
132 343 : $this->nocache = false;
133 343 : $this->prefix_code = array();
134 343 : $this->prefix_number = 0;
135 343 : }
136 : public static function &instance($new_instance = null)
137 : {
138 343 : static $instance = null;
139 343 : if (isset($new_instance) && is_object($new_instance))
140 343 : $instance = $new_instance;
141 343 : return $instance;
142 : }
143 :
144 : #line 147 "internal.templateparser.php"
145 :
146 : /* Next is all token values, as class constants
147 : */
148 : /*
149 : ** These constants (all generated automatically by the parser generator)
150 : ** specify the various kinds of tokens (terminals) that the parser
151 : ** understands.
152 : **
153 : ** Each symbol here is a terminal symbol in the grammar.
154 : */
155 : const TP_OTHER = 1;
156 : const TP_XML = 2;
157 : const TP_PHP = 3;
158 : const TP_SHORTTAGSTART = 4;
159 : const TP_SHORTTAGEND = 5;
160 : const TP_PHPSTART = 6;
161 : const TP_PHPEND = 7;
162 : const TP_COMMENTEND = 8;
163 : const TP_COMMENTSTART = 9;
164 : const TP_SINGLEQUOTE = 10;
165 : const TP_LITERALSTART = 11;
166 : const TP_LITERALEND = 12;
167 : const TP_LDELIMTAG = 13;
168 : const TP_RDELIMTAG = 14;
169 : const TP_LDELSLASH = 15;
170 : const TP_LDEL = 16;
171 : const TP_RDEL = 17;
172 : const TP_ISIN = 18;
173 : const TP_AS = 19;
174 : const TP_BOOLEAN = 20;
175 : const TP_NULL = 21;
176 : const TP_IDENTITY = 22;
177 : const TP_NONEIDENTITY = 23;
178 : const TP_EQUALS = 24;
179 : const TP_NOTEQUALS = 25;
180 : const TP_GREATEREQUAL = 26;
181 : const TP_LESSEQUAL = 27;
182 : const TP_GREATERTHAN = 28;
183 : const TP_LESSTHAN = 29;
184 : const TP_NOT = 30;
185 : const TP_LAND = 31;
186 : const TP_LOR = 32;
187 : const TP_LXOR = 33;
188 : const TP_ISODDBY = 34;
189 : const TP_ISNOTODDBY = 35;
190 : const TP_ISODD = 36;
191 : const TP_ISNOTODD = 37;
192 : const TP_ISEVENBY = 38;
193 : const TP_ISNOTEVENBY = 39;
194 : const TP_ISEVEN = 40;
195 : const TP_ISNOTEVEN = 41;
196 : const TP_ISDIVBY = 42;
197 : const TP_ISNOTDIVBY = 43;
198 : const TP_OPENP = 44;
199 : const TP_CLOSEP = 45;
200 : const TP_OPENB = 46;
201 : const TP_CLOSEB = 47;
202 : const TP_PTR = 48;
203 : const TP_APTR = 49;
204 : const TP_EQUAL = 50;
205 : const TP_INTEGER = 51;
206 : const TP_INCDEC = 52;
207 : const TP_UNIMATH = 53;
208 : const TP_MATH = 54;
209 : const TP_DOLLAR = 55;
210 : const TP_COLON = 56;
211 : const TP_DOUBLECOLON = 57;
212 : const TP_SEMICOLON = 58;
213 : const TP_AT = 59;
214 : const TP_HATCH = 60;
215 : const TP_QUOTE = 61;
216 : const TP_BACKTICK = 62;
217 : const TP_VERT = 63;
218 : const TP_DOT = 64;
219 : const TP_COMMA = 65;
220 : const TP_ANDSYM = 66;
221 : const TP_ID = 67;
222 : const TP_SPACE = 68;
223 : const YY_NO_ACTION = 442;
224 : const YY_ACCEPT_ACTION = 441;
225 : const YY_ERROR_ACTION = 440;
226 :
227 : /* Next are that tables used to determine what action to take based on the
228 : ** current state and lookahead token. These tables are used to implement
229 : ** functions that take a state number and lookahead value and return an
230 : ** action integer.
231 : **
232 : ** Suppose the action integer is N. Then the action is determined as
233 : ** follows
234 : **
235 : ** 0 <= N < self::YYNSTATE Shift N. That is,
236 : ** push the lookahead
237 : ** token onto the stack
238 : ** and goto state N.
239 : **
240 : ** self::YYNSTATE <= N < self::YYNSTATE+self::YYNRULE Reduce by rule N-YYNSTATE.
241 : **
242 : ** N == self::YYNSTATE+self::YYNRULE A syntax error has occurred.
243 : **
244 : ** N == self::YYNSTATE+self::YYNRULE+1 The parser accepts its
245 : ** input. (and concludes parsing)
246 : **
247 : ** N == self::YYNSTATE+self::YYNRULE+2 No such action. Denotes unused
248 : ** slots in the yy_action[] table.
249 : **
250 : ** The action table is constructed as a single large static array $yy_action.
251 : ** Given state S and lookahead X, the action is computed as
252 : **
253 : ** self::$yy_action[self::$yy_shift_ofst[S] + X ]
254 : **
255 : ** If the index value self::$yy_shift_ofst[S]+X is out of range or if the value
256 : ** self::$yy_lookahead[self::$yy_shift_ofst[S]+X] is not equal to X or if
257 : ** self::$yy_shift_ofst[S] is equal to self::YY_SHIFT_USE_DFLT, it means that
258 : ** the action is not in the table and that self::$yy_default[S] should be used instead.
259 : **
260 : ** The formula above is for computing the action when the lookahead is
261 : ** a terminal symbol. If the lookahead is a non-terminal (as occurs after
262 : ** a reduce action) then the static $yy_reduce_ofst array is used in place of
263 : ** the static $yy_shift_ofst array and self::YY_REDUCE_USE_DFLT is used in place of
264 : ** self::YY_SHIFT_USE_DFLT.
265 : **
266 : ** The following are the tables generated in this section:
267 : **
268 : ** self::$yy_action A single table containing all actions.
269 : ** self::$yy_lookahead A table containing the lookahead for each entry in
270 : ** yy_action. Used to detect hash collisions.
271 : ** self::$yy_shift_ofst For each state, the offset into self::$yy_action for
272 : ** shifting terminals.
273 : ** self::$yy_reduce_ofst For each state, the offset into self::$yy_action for
274 : ** shifting non-terminals after a reduce.
275 : ** self::$yy_default Default action for each state.
276 : */
277 : const YY_SZ_ACTTAB = 1299;
278 : static public $yy_action = array(
279 : /* 0 */ 260, 259, 256, 11, 9, 261, 262, 7, 8, 247,
280 : /* 10 */ 248, 3, 2, 56, 182, 254, 25, 198, 150, 30,
281 : /* 20 */ 270, 185, 71, 238, 235, 119, 192, 151, 150, 18,
282 : /* 30 */ 246, 114, 217, 6, 210, 56, 224, 242, 236, 14,
283 : /* 40 */ 150, 30, 190, 25, 211, 238, 235, 4, 270, 12,
284 : /* 50 */ 71, 137, 102, 16, 148, 24, 35, 137, 65, 166,
285 : /* 60 */ 279, 280, 162, 43, 39, 242, 236, 187, 136, 28,
286 : /* 70 */ 138, 12, 211, 254, 202, 42, 148, 27, 35, 178,
287 : /* 80 */ 65, 216, 172, 15, 274, 43, 39, 186, 246, 93,
288 : /* 90 */ 221, 25, 41, 194, 187, 260, 259, 256, 11, 9,
289 : /* 100 */ 261, 262, 7, 8, 247, 248, 3, 2, 260, 259,
290 : /* 110 */ 256, 11, 9, 261, 262, 7, 8, 247, 248, 3,
291 : /* 120 */ 2, 56, 257, 245, 118, 19, 150, 30, 31, 224,
292 : /* 130 */ 34, 238, 235, 175, 252, 253, 276, 277, 264, 251,
293 : /* 140 */ 278, 265, 187, 56, 25, 182, 40, 25, 150, 30,
294 : /* 150 */ 25, 197, 254, 238, 235, 28, 283, 12, 191, 150,
295 : /* 160 */ 18, 14, 148, 6, 35, 169, 63, 246, 199, 282,
296 : /* 170 */ 203, 43, 39, 87, 102, 137, 254, 4, 133, 12,
297 : /* 180 */ 137, 19, 36, 263, 148, 1, 35, 147, 61, 271,
298 : /* 190 */ 147, 246, 101, 43, 39, 187, 180, 56, 187, 136,
299 : /* 200 */ 132, 187, 150, 30, 266, 201, 42, 238, 235, 260,
300 : /* 210 */ 259, 256, 11, 9, 261, 262, 7, 8, 247, 248,
301 : /* 220 */ 3, 2, 17, 31, 56, 38, 316, 222, 108, 150,
302 : /* 230 */ 30, 28, 23, 12, 238, 235, 282, 203, 148, 69,
303 : /* 240 */ 35, 40, 65, 250, 215, 184, 56, 43, 39, 36,
304 : /* 250 */ 63, 150, 30, 14, 138, 43, 238, 235, 28, 21,
305 : /* 260 */ 12, 137, 165, 10, 52, 148, 102, 35, 158, 63,
306 : /* 270 */ 115, 63, 228, 137, 43, 39, 43, 316, 162, 183,
307 : /* 280 */ 28, 139, 12, 109, 254, 14, 33, 148, 162, 35,
308 : /* 290 */ 270, 63, 71, 207, 71, 162, 43, 39, 102, 246,
309 : /* 300 */ 56, 20, 241, 141, 188, 150, 30, 242, 236, 130,
310 : /* 310 */ 238, 235, 193, 214, 211, 137, 211, 441, 49, 181,
311 : /* 320 */ 176, 204, 56, 162, 128, 63, 121, 150, 30, 25,
312 : /* 330 */ 43, 224, 238, 235, 28, 244, 12, 208, 112, 131,
313 : /* 340 */ 177, 148, 272, 35, 70, 65, 282, 203, 233, 63,
314 : /* 350 */ 43, 39, 106, 131, 43, 14, 28, 41, 12, 36,
315 : /* 360 */ 26, 143, 233, 148, 162, 35, 124, 65, 102, 254,
316 : /* 370 */ 137, 224, 43, 39, 270, 95, 71, 51, 213, 134,
317 : /* 380 */ 187, 73, 156, 140, 246, 233, 145, 146, 137, 92,
318 : /* 390 */ 56, 242, 236, 71, 71, 150, 30, 104, 211, 234,
319 : /* 400 */ 238, 235, 59, 249, 219, 226, 142, 233, 174, 205,
320 : /* 410 */ 270, 129, 71, 51, 71, 211, 211, 77, 157, 113,
321 : /* 420 */ 25, 54, 240, 273, 28, 92, 12, 242, 236, 168,
322 : /* 430 */ 218, 148, 98, 127, 211, 63, 211, 271, 47, 249,
323 : /* 440 */ 43, 39, 233, 131, 53, 94, 270, 139, 71, 51,
324 : /* 450 */ 195, 176, 97, 78, 32, 162, 162, 137, 240, 273,
325 : /* 460 */ 271, 92, 233, 242, 236, 270, 162, 71, 51, 89,
326 : /* 470 */ 211, 171, 82, 131, 55, 249, 88, 240, 273, 245,
327 : /* 480 */ 92, 162, 242, 236, 270, 271, 71, 50, 91, 211,
328 : /* 490 */ 271, 74, 155, 137, 249, 184, 240, 273, 22, 92,
329 : /* 500 */ 90, 242, 236, 107, 271, 38, 179, 179, 211, 270,
330 : /* 510 */ 245, 71, 51, 249, 237, 38, 83, 29, 13, 44,
331 : /* 520 */ 161, 240, 273, 21, 92, 153, 242, 236, 239, 189,
332 : /* 530 */ 284, 212, 209, 211, 245, 56, 167, 149, 249, 164,
333 : /* 540 */ 150, 30, 223, 230, 68, 238, 235, 152, 258, 270,
334 : /* 550 */ 62, 71, 51, 196, 170, 144, 80, 227, 255, 220,
335 : /* 560 */ 281, 240, 273, 15, 92, 162, 242, 236, 159, 28,
336 : /* 570 */ 58, 125, 37, 211, 225, 72, 148, 179, 249, 210,
337 : /* 580 */ 63, 66, 110, 5, 32, 43, 39, 270, 200, 71,
338 : /* 590 */ 51, 234, 139, 266, 79, 266, 266, 266, 266, 240,
339 : /* 600 */ 273, 266, 92, 266, 242, 236, 266, 270, 266, 71,
340 : /* 610 */ 51, 211, 266, 266, 76, 266, 249, 266, 266, 240,
341 : /* 620 */ 273, 266, 92, 266, 242, 236, 266, 266, 266, 266,
342 : /* 630 */ 266, 211, 266, 34, 266, 266, 249, 252, 253, 276,
343 : /* 640 */ 277, 264, 251, 278, 265, 266, 266, 266, 266, 266,
344 : /* 650 */ 266, 266, 266, 266, 266, 266, 266, 266, 266, 266,
345 : /* 660 */ 250, 266, 229, 231, 64, 154, 232, 266, 266, 266,
346 : /* 670 */ 57, 266, 60, 266, 269, 243, 150, 30, 137, 270,
347 : /* 680 */ 266, 71, 99, 266, 266, 266, 266, 266, 266, 266,
348 : /* 690 */ 266, 240, 273, 266, 92, 266, 242, 236, 266, 266,
349 : /* 700 */ 266, 266, 266, 211, 266, 266, 266, 270, 266, 71,
350 : /* 710 */ 51, 135, 268, 266, 81, 266, 266, 266, 266, 240,
351 : /* 720 */ 273, 266, 92, 266, 242, 236, 266, 266, 266, 266,
352 : /* 730 */ 266, 211, 266, 266, 266, 266, 249, 270, 266, 71,
353 : /* 740 */ 51, 266, 266, 266, 75, 266, 266, 266, 266, 240,
354 : /* 750 */ 273, 266, 92, 266, 242, 236, 270, 266, 71, 96,
355 : /* 760 */ 266, 211, 266, 266, 266, 266, 249, 266, 240, 273,
356 : /* 770 */ 266, 92, 266, 242, 236, 266, 266, 173, 266, 266,
357 : /* 780 */ 211, 270, 266, 71, 96, 266, 266, 266, 266, 266,
358 : /* 790 */ 266, 266, 266, 240, 273, 266, 92, 266, 242, 236,
359 : /* 800 */ 266, 266, 275, 266, 266, 211, 266, 266, 266, 266,
360 : /* 810 */ 270, 266, 71, 96, 266, 266, 266, 266, 266, 266,
361 : /* 820 */ 266, 266, 240, 273, 266, 92, 266, 242, 236, 266,
362 : /* 830 */ 270, 163, 71, 96, 211, 266, 266, 266, 266, 266,
363 : /* 840 */ 266, 266, 240, 273, 266, 92, 266, 242, 236, 266,
364 : /* 850 */ 266, 160, 266, 266, 211, 270, 266, 71, 99, 266,
365 : /* 860 */ 266, 266, 266, 266, 266, 266, 266, 240, 273, 266,
366 : /* 870 */ 92, 266, 242, 236, 266, 266, 266, 266, 266, 211,
367 : /* 880 */ 266, 266, 266, 266, 270, 266, 71, 111, 267, 266,
368 : /* 890 */ 266, 266, 266, 266, 266, 266, 240, 273, 266, 92,
369 : /* 900 */ 266, 242, 236, 266, 270, 266, 71, 103, 211, 266,
370 : /* 910 */ 266, 266, 266, 266, 266, 266, 240, 273, 266, 92,
371 : /* 920 */ 266, 242, 236, 266, 266, 266, 266, 266, 211, 270,
372 : /* 930 */ 266, 71, 100, 266, 266, 266, 266, 266, 266, 266,
373 : /* 940 */ 266, 240, 273, 266, 92, 266, 242, 236, 266, 266,
374 : /* 950 */ 266, 266, 266, 211, 266, 266, 266, 266, 270, 266,
375 : /* 960 */ 71, 116, 266, 266, 266, 266, 266, 266, 266, 266,
376 : /* 970 */ 240, 273, 266, 92, 266, 242, 236, 266, 270, 266,
377 : /* 980 */ 71, 122, 211, 266, 266, 266, 266, 266, 266, 266,
378 : /* 990 */ 240, 273, 266, 92, 266, 242, 236, 266, 266, 266,
379 : /* 1000 */ 266, 266, 211, 270, 266, 71, 126, 266, 266, 266,
380 : /* 1010 */ 266, 266, 266, 266, 266, 240, 273, 266, 92, 266,
381 : /* 1020 */ 242, 236, 266, 266, 266, 266, 266, 211, 266, 266,
382 : /* 1030 */ 266, 266, 270, 266, 67, 45, 266, 266, 266, 266,
383 : /* 1040 */ 266, 266, 266, 266, 240, 273, 266, 92, 266, 242,
384 : /* 1050 */ 236, 266, 270, 266, 71, 123, 211, 266, 266, 266,
385 : /* 1060 */ 266, 266, 266, 266, 240, 273, 266, 92, 266, 242,
386 : /* 1070 */ 236, 266, 266, 266, 266, 266, 211, 270, 266, 71,
387 : /* 1080 */ 120, 266, 266, 266, 266, 266, 266, 266, 266, 240,
388 : /* 1090 */ 273, 266, 92, 266, 242, 236, 266, 266, 266, 266,
389 : /* 1100 */ 266, 211, 266, 266, 266, 266, 270, 266, 71, 105,
390 : /* 1110 */ 266, 266, 266, 266, 266, 266, 266, 266, 240, 273,
391 : /* 1120 */ 266, 92, 266, 242, 236, 266, 270, 266, 71, 117,
392 : /* 1130 */ 211, 266, 266, 266, 266, 266, 266, 266, 240, 273,
393 : /* 1140 */ 266, 92, 266, 242, 236, 266, 266, 266, 266, 266,
394 : /* 1150 */ 211, 270, 266, 67, 48, 266, 266, 266, 266, 266,
395 : /* 1160 */ 266, 266, 266, 240, 273, 266, 92, 266, 242, 236,
396 : /* 1170 */ 266, 266, 266, 266, 266, 211, 266, 266, 266, 266,
397 : /* 1180 */ 270, 266, 71, 46, 266, 266, 266, 266, 266, 266,
398 : /* 1190 */ 266, 266, 240, 273, 266, 92, 266, 242, 236, 266,
399 : /* 1200 */ 270, 266, 71, 266, 211, 266, 266, 266, 266, 266,
400 : /* 1210 */ 266, 266, 240, 273, 266, 84, 266, 242, 236, 266,
401 : /* 1220 */ 266, 266, 266, 266, 211, 270, 266, 71, 266, 266,
402 : /* 1230 */ 266, 266, 266, 266, 266, 266, 266, 240, 273, 266,
403 : /* 1240 */ 86, 266, 242, 236, 266, 266, 266, 266, 266, 211,
404 : /* 1250 */ 266, 266, 266, 266, 270, 266, 71, 266, 266, 266,
405 : /* 1260 */ 266, 266, 266, 266, 266, 266, 240, 273, 266, 85,
406 : /* 1270 */ 266, 242, 236, 266, 270, 266, 71, 266, 211, 266,
407 : /* 1280 */ 266, 266, 266, 266, 266, 266, 206, 266, 266, 266,
408 : /* 1290 */ 266, 242, 236, 266, 266, 266, 266, 266, 211,
409 : );
410 : static public $yy_lookahead = array(
411 : /* 0 */ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
412 : /* 10 */ 41, 42, 43, 10, 1, 1, 16, 17, 15, 16,
413 : /* 20 */ 73, 1, 75, 20, 21, 79, 1, 58, 15, 16,
414 : /* 30 */ 16, 95, 85, 30, 98, 10, 100, 90, 91, 44,
415 : /* 40 */ 15, 16, 47, 16, 97, 20, 21, 44, 73, 46,
416 : /* 50 */ 75, 63, 57, 65, 51, 16, 53, 63, 55, 64,
417 : /* 60 */ 85, 86, 68, 60, 61, 90, 91, 67, 55, 44,
418 : /* 70 */ 67, 46, 97, 1, 61, 62, 51, 50, 53, 52,
419 : /* 80 */ 55, 17, 59, 44, 12, 60, 61, 67, 16, 74,
420 : /* 90 */ 67, 16, 67, 47, 67, 31, 32, 33, 34, 35,
421 : /* 100 */ 36, 37, 38, 39, 40, 41, 42, 43, 31, 32,
422 : /* 110 */ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
423 : /* 120 */ 43, 10, 45, 108, 95, 50, 15, 16, 46, 100,
424 : /* 130 */ 18, 20, 21, 17, 22, 23, 24, 25, 26, 27,
425 : /* 140 */ 28, 29, 67, 10, 16, 1, 64, 16, 15, 16,
426 : /* 150 */ 16, 17, 1, 20, 21, 44, 5, 46, 47, 15,
427 : /* 160 */ 16, 44, 51, 30, 53, 48, 55, 16, 62, 53,
428 : /* 170 */ 54, 60, 61, 83, 57, 63, 1, 44, 67, 46,
429 : /* 180 */ 63, 50, 66, 8, 51, 68, 53, 59, 55, 99,
430 : /* 190 */ 59, 16, 96, 60, 61, 67, 1, 10, 67, 55,
431 : /* 200 */ 67, 67, 15, 16, 47, 61, 62, 20, 21, 31,
432 : /* 210 */ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
433 : /* 220 */ 42, 43, 65, 46, 10, 48, 17, 17, 96, 15,
434 : /* 230 */ 16, 44, 16, 46, 20, 21, 53, 54, 51, 45,
435 : /* 240 */ 53, 64, 55, 45, 17, 73, 10, 60, 61, 66,
436 : /* 250 */ 55, 15, 16, 44, 67, 60, 20, 21, 44, 50,
437 : /* 260 */ 46, 63, 67, 58, 92, 51, 57, 53, 48, 55,
438 : /* 270 */ 65, 55, 17, 63, 60, 61, 60, 68, 68, 107,
439 : /* 280 */ 44, 67, 46, 67, 1, 44, 16, 51, 68, 53,
440 : /* 290 */ 73, 55, 75, 10, 75, 68, 60, 61, 57, 16,
441 : /* 300 */ 10, 49, 85, 67, 62, 15, 16, 90, 91, 90,
442 : /* 310 */ 20, 21, 93, 17, 97, 63, 97, 70, 71, 72,
443 : /* 320 */ 73, 51, 10, 68, 17, 55, 95, 15, 16, 16,
444 : /* 330 */ 60, 100, 20, 21, 44, 67, 46, 67, 77, 78,
445 : /* 340 */ 47, 51, 17, 53, 67, 55, 53, 54, 87, 55,
446 : /* 350 */ 60, 61, 77, 78, 60, 44, 44, 67, 46, 66,
447 : /* 360 */ 49, 67, 87, 51, 68, 53, 95, 55, 57, 1,
448 : /* 370 */ 63, 100, 60, 61, 73, 77, 75, 76, 10, 67,
449 : /* 380 */ 67, 80, 81, 82, 16, 87, 85, 86, 63, 88,
450 : /* 390 */ 10, 90, 91, 75, 75, 15, 16, 77, 97, 101,
451 : /* 400 */ 20, 21, 55, 102, 17, 17, 55, 87, 90, 90,
452 : /* 410 */ 73, 17, 75, 76, 75, 97, 97, 80, 67, 96,
453 : /* 420 */ 16, 83, 85, 86, 44, 88, 46, 90, 91, 90,
454 : /* 430 */ 17, 51, 77, 78, 97, 55, 97, 99, 79, 102,
455 : /* 440 */ 60, 61, 87, 78, 83, 74, 73, 67, 75, 76,
456 : /* 450 */ 72, 73, 77, 80, 56, 68, 68, 63, 85, 86,
457 : /* 460 */ 99, 88, 87, 90, 91, 73, 68, 75, 76, 83,
458 : /* 470 */ 97, 67, 80, 78, 83, 102, 74, 85, 86, 108,
459 : /* 480 */ 88, 68, 90, 91, 73, 99, 75, 76, 83, 97,
460 : /* 490 */ 99, 80, 84, 63, 102, 73, 85, 86, 103, 88,
461 : /* 500 */ 74, 90, 91, 96, 99, 48, 99, 99, 97, 73,
462 : /* 510 */ 108, 75, 76, 102, 100, 48, 80, 50, 44, 96,
463 : /* 520 */ 67, 85, 86, 50, 88, 55, 90, 91, 51, 107,
464 : /* 530 */ 17, 60, 60, 97, 108, 10, 67, 19, 102, 19,
465 : /* 540 */ 15, 16, 67, 5, 55, 20, 21, 67, 17, 73,
466 : /* 550 */ 55, 75, 76, 45, 56, 64, 80, 17, 108, 67,
467 : /* 560 */ 45, 85, 86, 44, 88, 68, 90, 91, 67, 44,
468 : /* 570 */ 67, 67, 89, 97, 87, 93, 51, 99, 102, 98,
469 : /* 580 */ 55, 55, 96, 104, 56, 60, 61, 73, 81, 75,
470 : /* 590 */ 76, 101, 67, 109, 80, 109, 109, 109, 109, 85,
471 : /* 600 */ 86, 109, 88, 109, 90, 91, 109, 73, 109, 75,
472 : /* 610 */ 76, 97, 109, 109, 80, 109, 102, 109, 109, 85,
473 : /* 620 */ 86, 109, 88, 109, 90, 91, 109, 109, 109, 109,
474 : /* 630 */ 109, 97, 109, 18, 109, 109, 102, 22, 23, 24,
475 : /* 640 */ 25, 26, 27, 28, 29, 109, 109, 109, 109, 109,
476 : /* 650 */ 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
477 : /* 660 */ 45, 109, 1, 2, 3, 4, 5, 109, 109, 109,
478 : /* 670 */ 9, 109, 11, 109, 13, 14, 15, 16, 63, 73,
479 : /* 680 */ 109, 75, 76, 109, 109, 109, 109, 109, 109, 109,
480 : /* 690 */ 109, 85, 86, 109, 88, 109, 90, 91, 109, 109,
481 : /* 700 */ 109, 109, 109, 97, 109, 109, 109, 73, 109, 75,
482 : /* 710 */ 76, 105, 106, 109, 80, 109, 109, 109, 109, 85,
483 : /* 720 */ 86, 109, 88, 109, 90, 91, 109, 109, 109, 109,
484 : /* 730 */ 109, 97, 109, 109, 109, 109, 102, 73, 109, 75,
485 : /* 740 */ 76, 109, 109, 109, 80, 109, 109, 109, 109, 85,
486 : /* 750 */ 86, 109, 88, 109, 90, 91, 73, 109, 75, 76,
487 : /* 760 */ 109, 97, 109, 109, 109, 109, 102, 109, 85, 86,
488 : /* 770 */ 109, 88, 109, 90, 91, 109, 109, 94, 109, 109,
489 : /* 780 */ 97, 73, 109, 75, 76, 109, 109, 109, 109, 109,
490 : /* 790 */ 109, 109, 109, 85, 86, 109, 88, 109, 90, 91,
491 : /* 800 */ 109, 109, 94, 109, 109, 97, 109, 109, 109, 109,
492 : /* 810 */ 73, 109, 75, 76, 109, 109, 109, 109, 109, 109,
493 : /* 820 */ 109, 109, 85, 86, 109, 88, 109, 90, 91, 109,
494 : /* 830 */ 73, 94, 75, 76, 97, 109, 109, 109, 109, 109,
495 : /* 840 */ 109, 109, 85, 86, 109, 88, 109, 90, 91, 109,
496 : /* 850 */ 109, 94, 109, 109, 97, 73, 109, 75, 76, 109,
497 : /* 860 */ 109, 109, 109, 109, 109, 109, 109, 85, 86, 109,
498 : /* 870 */ 88, 109, 90, 91, 109, 109, 109, 109, 109, 97,
499 : /* 880 */ 109, 109, 109, 109, 73, 109, 75, 76, 106, 109,
500 : /* 890 */ 109, 109, 109, 109, 109, 109, 85, 86, 109, 88,
501 : /* 900 */ 109, 90, 91, 109, 73, 109, 75, 76, 97, 109,
502 : /* 910 */ 109, 109, 109, 109, 109, 109, 85, 86, 109, 88,
503 : /* 920 */ 109, 90, 91, 109, 109, 109, 109, 109, 97, 73,
504 : /* 930 */ 109, 75, 76, 109, 109, 109, 109, 109, 109, 109,
505 : /* 940 */ 109, 85, 86, 109, 88, 109, 90, 91, 109, 109,
506 : /* 950 */ 109, 109, 109, 97, 109, 109, 109, 109, 73, 109,
507 : /* 960 */ 75, 76, 109, 109, 109, 109, 109, 109, 109, 109,
508 : /* 970 */ 85, 86, 109, 88, 109, 90, 91, 109, 73, 109,
509 : /* 980 */ 75, 76, 97, 109, 109, 109, 109, 109, 109, 109,
510 : /* 990 */ 85, 86, 109, 88, 109, 90, 91, 109, 109, 109,
511 : /* 1000 */ 109, 109, 97, 73, 109, 75, 76, 109, 109, 109,
512 : /* 1010 */ 109, 109, 109, 109, 109, 85, 86, 109, 88, 109,
513 : /* 1020 */ 90, 91, 109, 109, 109, 109, 109, 97, 109, 109,
514 : /* 1030 */ 109, 109, 73, 109, 75, 76, 109, 109, 109, 109,
515 : /* 1040 */ 109, 109, 109, 109, 85, 86, 109, 88, 109, 90,
516 : /* 1050 */ 91, 109, 73, 109, 75, 76, 97, 109, 109, 109,
517 : /* 1060 */ 109, 109, 109, 109, 85, 86, 109, 88, 109, 90,
518 : /* 1070 */ 91, 109, 109, 109, 109, 109, 97, 73, 109, 75,
519 : /* 1080 */ 76, 109, 109, 109, 109, 109, 109, 109, 109, 85,
520 : /* 1090 */ 86, 109, 88, 109, 90, 91, 109, 109, 109, 109,
521 : /* 1100 */ 109, 97, 109, 109, 109, 109, 73, 109, 75, 76,
522 : /* 1110 */ 109, 109, 109, 109, 109, 109, 109, 109, 85, 86,
523 : /* 1120 */ 109, 88, 109, 90, 91, 109, 73, 109, 75, 76,
524 : /* 1130 */ 97, 109, 109, 109, 109, 109, 109, 109, 85, 86,
525 : /* 1140 */ 109, 88, 109, 90, 91, 109, 109, 109, 109, 109,
526 : /* 1150 */ 97, 73, 109, 75, 76, 109, 109, 109, 109, 109,
527 : /* 1160 */ 109, 109, 109, 85, 86, 109, 88, 109, 90, 91,
528 : /* 1170 */ 109, 109, 109, 109, 109, 97, 109, 109, 109, 109,
529 : /* 1180 */ 73, 109, 75, 76, 109, 109, 109, 109, 109, 109,
530 : /* 1190 */ 109, 109, 85, 86, 109, 88, 109, 90, 91, 109,
531 : /* 1200 */ 73, 109, 75, 109, 97, 109, 109, 109, 109, 109,
532 : /* 1210 */ 109, 109, 85, 86, 109, 88, 109, 90, 91, 109,
533 : /* 1220 */ 109, 109, 109, 109, 97, 73, 109, 75, 109, 109,
534 : /* 1230 */ 109, 109, 109, 109, 109, 109, 109, 85, 86, 109,
535 : /* 1240 */ 88, 109, 90, 91, 109, 109, 109, 109, 109, 97,
536 : /* 1250 */ 109, 109, 109, 109, 73, 109, 75, 109, 109, 109,
537 : /* 1260 */ 109, 109, 109, 109, 109, 109, 85, 86, 109, 88,
538 : /* 1270 */ 109, 90, 91, 109, 73, 109, 75, 109, 97, 109,
539 : /* 1280 */ 109, 109, 109, 109, 109, 109, 85, 109, 109, 109,
540 : /* 1290 */ 109, 90, 91, 109, 109, 109, 109, 109, 97,
541 : );
542 : const YY_SHIFT_USE_DFLT = -32;
543 : const YY_SHIFT_MAX = 174;
544 : static public $yy_shift_ofst = array(
545 : /* 0 */ 661, 133, 3, 3, 3, 3, 3, 3, 3, 3,
546 : /* 10 */ 3, 3, 312, 187, 187, 187, 187, 312, 25, 187,
547 : /* 20 */ 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
548 : /* 30 */ 290, 111, 236, 214, 380, 525, 525, 525, 216, 144,
549 : /* 40 */ 270, 117, 195, 294, 177, 210, -6, 398, -6, 661,
550 : /* 50 */ 615, 112, 13, 27, 131, 128, 368, 14, 220, 313,
551 : /* 60 */ 14, 404, 313, 313, 14, 404, 313, 467, 313, 457,
552 : /* 70 */ 497, 457, 457, 64, 77, -31, 178, 178, 178, 178,
553 : /* 80 */ 178, 178, 178, 178, 293, 116, 183, 0, 175, 75,
554 : /* 90 */ 283, 134, 183, 72, 151, 227, -12, 413, 387, 252,
555 : /* 100 */ 325, 82, 351, 394, 388, 198, 255, 82, 82, 39,
556 : /* 110 */ 82, 307, 296, 82, 457, 526, 430, 430, 457, 528,
557 : /* 120 */ 430, 457, 430, 430, 457, 474, 430, -32, -32, -32,
558 : /* 130 */ -32, -32, 209, -5, 311, 157, 20, 23, 241, 241,
559 : /* 140 */ 205, 241, 504, 471, 477, 518, 520, 475, 491, 489,
560 : /* 150 */ 503, 495, 538, 480, 470, 513, 531, 519, 501, 540,
561 : /* 160 */ 508, 473, 453, 194, 347, 106, 469, 46, 242, 277,
562 : /* 170 */ 268, 498, 492, 515, 472,
563 : );
564 : const YY_REDUCE_USE_DFLT = -65;
565 : const YY_REDUCE_MAX = 131;
566 : static public $yy_reduce_ofst = array(
567 : /* 0 */ 247, 301, 436, 514, 411, 337, 373, 392, 476, 534,
568 : /* 10 */ 664, 634, 606, 737, 683, 757, 708, 782, 959, 979,
569 : /* 20 */ 1004, 930, 905, 831, 811, 856, 1053, 885, 1033, 1107,
570 : /* 30 */ 1078, 1127, 1152, 1181, -25, 217, -53, 1201, 219, 172,
571 : /* 40 */ 319, 355, 339, 318, -64, 261, 275, 298, 261, 378,
572 : /* 50 */ 395, 395, 422, 408, 407, 407, 426, 402, 320, 90,
573 : /* 60 */ 15, 338, 361, 391, 371, 391, 386, 271, 405, 29,
574 : /* 70 */ 375, 271, 231, 479, 479, 479, 479, 479, 479, 479,
575 : /* 80 */ 479, 479, 479, 479, 483, 483, 483, 478, 450, 478,
576 : /* 90 */ 450, 478, 483, 450, 450, 487, 365, 487, 487, 365,
577 : /* 100 */ 365, 481, 482, 365, 487, 365, 487, 481, 481, 486,
578 : /* 110 */ 481, 365, 487, 481, 414, 507, 365, 365, 414, 490,
579 : /* 120 */ 365, 414, 365, 365, 414, 423, 365, 359, 323, 132,
580 : /* 130 */ 96, -54,
581 : );
582 : static public $yyExpectedTokens = array(
583 : /* 0 */ array(1, 2, 3, 4, 5, 9, 11, 13, 14, 15, 16, ),
584 : /* 1 */ array(10, 15, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
585 : /* 2 */ array(10, 15, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
586 : /* 3 */ array(10, 15, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
587 : /* 4 */ array(10, 15, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
588 : /* 5 */ array(10, 15, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
589 : /* 6 */ array(10, 15, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
590 : /* 7 */ array(10, 15, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
591 : /* 8 */ array(10, 15, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
592 : /* 9 */ array(10, 15, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
593 : /* 10 */ array(10, 15, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
594 : /* 11 */ array(10, 15, 16, 20, 21, 30, 44, 46, 51, 53, 55, 60, 61, 67, ),
595 : /* 12 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
596 : /* 13 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
597 : /* 14 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
598 : /* 15 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
599 : /* 16 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
600 : /* 17 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
601 : /* 18 */ array(1, 10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
602 : /* 19 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
603 : /* 20 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
604 : /* 21 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
605 : /* 22 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
606 : /* 23 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
607 : /* 24 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
608 : /* 25 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
609 : /* 26 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
610 : /* 27 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
611 : /* 28 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
612 : /* 29 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
613 : /* 30 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
614 : /* 31 */ array(10, 15, 16, 20, 21, 44, 46, 47, 51, 53, 55, 60, 61, 67, ),
615 : /* 32 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
616 : /* 33 */ array(10, 15, 16, 20, 21, 44, 46, 51, 53, 55, 60, 61, 67, ),
617 : /* 34 */ array(10, 15, 16, 20, 21, 44, 46, 51, 55, 60, 61, 67, ),
618 : /* 35 */ array(10, 15, 16, 20, 21, 44, 51, 55, 60, 61, 67, ),
619 : /* 36 */ array(10, 15, 16, 20, 21, 44, 51, 55, 60, 61, 67, ),
620 : /* 37 */ array(10, 15, 16, 20, 21, 44, 51, 55, 60, 61, 67, ),
621 : /* 38 */ array(16, 55, 60, 67, ),
622 : /* 39 */ array(1, 15, 16, 55, 61, 62, ),
623 : /* 40 */ array(16, 51, 55, 60, 67, ),
624 : /* 41 */ array(44, 48, 57, 63, 68, ),
625 : /* 42 */ array(1, 55, 60, 67, ),
626 : /* 43 */ array(55, 60, 67, ),
627 : /* 44 */ array(46, 48, 64, ),
628 : /* 45 */ array(17, 63, 68, ),
629 : /* 46 */ array(63, 68, ),
630 : /* 47 */ array(56, 68, ),
631 : /* 48 */ array(63, 68, ),
632 : /* 49 */ array(1, 2, 3, 4, 5, 9, 11, 13, 14, 15, 16, ),
633 : /* 50 */ array(18, 22, 23, 24, 25, 26, 27, 28, 29, 45, 63, ),
634 : /* 51 */ array(18, 22, 23, 24, 25, 26, 27, 28, 29, 63, ),
635 : /* 52 */ array(1, 15, 16, 55, 61, 62, ),
636 : /* 53 */ array(16, 50, 52, 67, ),
637 : /* 54 */ array(16, 50, 59, 67, ),
638 : /* 55 */ array(16, 59, 67, ),
639 : /* 56 */ array(1, 10, 16, ),
640 : /* 57 */ array(1, 16, ),
641 : /* 58 */ array(48, 68, ),
642 : /* 59 */ array(16, 67, ),
643 : /* 60 */ array(1, 16, ),
644 : /* 61 */ array(16, 67, ),
645 : /* 62 */ array(16, 67, ),
646 : /* 63 */ array(16, 67, ),
647 : /* 64 */ array(1, 16, ),
648 : /* 65 */ array(16, 67, ),
649 : /* 66 */ array(16, 67, ),
650 : /* 67 */ array(48, 50, ),
651 : /* 68 */ array(16, 67, ),
652 : /* 69 */ array(48, ),
653 : /* 70 */ array(68, ),
654 : /* 71 */ array(48, ),
655 : /* 72 */ array(48, ),
656 : /* 73 */ array(17, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
657 : /* 74 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 45, ),
658 : /* 75 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 58, ),
659 : /* 76 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
660 : /* 77 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
661 : /* 78 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
662 : /* 79 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
663 : /* 80 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
664 : /* 81 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
665 : /* 82 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
666 : /* 83 */ array(31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, ),
667 : /* 84 */ array(47, 53, 54, 66, ),
668 : /* 85 */ array(17, 53, 54, 66, ),
669 : /* 86 */ array(53, 54, 66, ),
670 : /* 87 */ array(16, 17, 67, ),
671 : /* 88 */ array(1, 8, 16, ),
672 : /* 89 */ array(16, 50, 67, ),
673 : /* 90 */ array(1, 10, 16, ),
674 : /* 91 */ array(16, 17, 67, ),
675 : /* 92 */ array(53, 54, 66, ),
676 : /* 93 */ array(1, 12, 16, ),
677 : /* 94 */ array(1, 5, 16, ),
678 : /* 95 */ array(17, 68, ),
679 : /* 96 */ array(63, 65, ),
680 : /* 97 */ array(17, 68, ),
681 : /* 98 */ array(17, 68, ),
682 : /* 99 */ array(49, 63, ),
683 : /* 100 */ array(17, 63, ),
684 : /* 101 */ array(46, 64, ),
685 : /* 102 */ array(55, 67, ),
686 : /* 103 */ array(17, 63, ),
687 : /* 104 */ array(17, 68, ),
688 : /* 105 */ array(45, 63, ),
689 : /* 106 */ array(17, 68, ),
690 : /* 107 */ array(46, 64, ),
691 : /* 108 */ array(46, 64, ),
692 : /* 109 */ array(16, 44, ),
693 : /* 110 */ array(46, 64, ),
694 : /* 111 */ array(17, 63, ),
695 : /* 112 */ array(17, 68, ),
696 : /* 113 */ array(46, 64, ),
697 : /* 114 */ array(48, ),
698 : /* 115 */ array(55, ),
699 : /* 116 */ array(63, ),
700 : /* 117 */ array(63, ),
701 : /* 118 */ array(48, ),
702 : /* 119 */ array(56, ),
703 : /* 120 */ array(63, ),
704 : /* 121 */ array(48, ),
705 : /* 122 */ array(63, ),
706 : /* 123 */ array(63, ),
707 : /* 124 */ array(48, ),
708 : /* 125 */ array(44, ),
709 : /* 126 */ array(63, ),
710 : /* 127 */ array(),
711 : /* 128 */ array(),
712 : /* 129 */ array(),
713 : /* 130 */ array(),
714 : /* 131 */ array(),
715 : /* 132 */ array(17, 44, 50, 57, 68, ),
716 : /* 133 */ array(44, 47, 57, 64, ),
717 : /* 134 */ array(44, 49, 57, ),
718 : /* 135 */ array(47, 65, ),
719 : /* 136 */ array(1, 67, ),
720 : /* 137 */ array(59, 67, ),
721 : /* 138 */ array(44, 57, ),
722 : /* 139 */ array(44, 57, ),
723 : /* 140 */ array(58, 65, ),
724 : /* 141 */ array(44, 57, ),
725 : /* 142 */ array(67, ),
726 : /* 143 */ array(60, ),
727 : /* 144 */ array(51, ),
728 : /* 145 */ array(19, ),
729 : /* 146 */ array(19, ),
730 : /* 147 */ array(67, ),
731 : /* 148 */ array(64, ),
732 : /* 149 */ array(55, ),
733 : /* 150 */ array(67, ),
734 : /* 151 */ array(55, ),
735 : /* 152 */ array(5, ),
736 : /* 153 */ array(67, ),
737 : /* 154 */ array(55, ),
738 : /* 155 */ array(17, ),
739 : /* 156 */ array(17, ),
740 : /* 157 */ array(44, ),
741 : /* 158 */ array(67, ),
742 : /* 159 */ array(17, ),
743 : /* 160 */ array(45, ),
744 : /* 161 */ array(50, ),
745 : /* 162 */ array(67, ),
746 : /* 163 */ array(45, ),
747 : /* 164 */ array(55, ),
748 : /* 165 */ array(62, ),
749 : /* 166 */ array(67, ),
750 : /* 167 */ array(47, ),
751 : /* 168 */ array(62, ),
752 : /* 169 */ array(67, ),
753 : /* 170 */ array(67, ),
754 : /* 171 */ array(56, ),
755 : /* 172 */ array(67, ),
756 : /* 173 */ array(45, ),
757 : /* 174 */ array(60, ),
758 : /* 175 */ array(),
759 : /* 176 */ array(),
760 : /* 177 */ array(),
761 : /* 178 */ array(),
762 : /* 179 */ array(),
763 : /* 180 */ array(),
764 : /* 181 */ array(),
765 : /* 182 */ array(),
766 : /* 183 */ array(),
767 : /* 184 */ array(),
768 : /* 185 */ array(),
769 : /* 186 */ array(),
770 : /* 187 */ array(),
771 : /* 188 */ array(),
772 : /* 189 */ array(),
773 : /* 190 */ array(),
774 : /* 191 */ array(),
775 : /* 192 */ array(),
776 : /* 193 */ array(),
777 : /* 194 */ array(),
778 : /* 195 */ array(),
779 : /* 196 */ array(),
780 : /* 197 */ array(),
781 : /* 198 */ array(),
782 : /* 199 */ array(),
783 : /* 200 */ array(),
784 : /* 201 */ array(),
785 : /* 202 */ array(),
786 : /* 203 */ array(),
787 : /* 204 */ array(),
788 : /* 205 */ array(),
789 : /* 206 */ array(),
790 : /* 207 */ array(),
791 : /* 208 */ array(),
792 : /* 209 */ array(),
793 : /* 210 */ array(),
794 : /* 211 */ array(),
795 : /* 212 */ array(),
796 : /* 213 */ array(),
797 : /* 214 */ array(),
798 : /* 215 */ array(),
799 : /* 216 */ array(),
800 : /* 217 */ array(),
801 : /* 218 */ array(),
802 : /* 219 */ array(),
803 : /* 220 */ array(),
804 : /* 221 */ array(),
805 : /* 222 */ array(),
806 : /* 223 */ array(),
807 : /* 224 */ array(),
808 : /* 225 */ array(),
809 : /* 226 */ array(),
810 : /* 227 */ array(),
811 : /* 228 */ array(),
812 : /* 229 */ array(),
813 : /* 230 */ array(),
814 : /* 231 */ array(),
815 : /* 232 */ array(),
816 : /* 233 */ array(),
817 : /* 234 */ array(),
818 : /* 235 */ array(),
819 : /* 236 */ array(),
820 : /* 237 */ array(),
821 : /* 238 */ array(),
822 : /* 239 */ array(),
823 : /* 240 */ array(),
824 : /* 241 */ array(),
825 : /* 242 */ array(),
826 : /* 243 */ array(),
827 : /* 244 */ array(),
828 : /* 245 */ array(),
829 : /* 246 */ array(),
830 : /* 247 */ array(),
831 : /* 248 */ array(),
832 : /* 249 */ array(),
833 : /* 250 */ array(),
834 : /* 251 */ array(),
835 : /* 252 */ array(),
836 : /* 253 */ array(),
837 : /* 254 */ array(),
838 : /* 255 */ array(),
839 : /* 256 */ array(),
840 : /* 257 */ array(),
841 : /* 258 */ array(),
842 : /* 259 */ array(),
843 : /* 260 */ array(),
844 : /* 261 */ array(),
845 : /* 262 */ array(),
846 : /* 263 */ array(),
847 : /* 264 */ array(),
848 : /* 265 */ array(),
849 : /* 266 */ array(),
850 : /* 267 */ array(),
851 : /* 268 */ array(),
852 : /* 269 */ array(),
853 : /* 270 */ array(),
854 : /* 271 */ array(),
855 : /* 272 */ array(),
856 : /* 273 */ array(),
857 : /* 274 */ array(),
858 : /* 275 */ array(),
859 : /* 276 */ array(),
860 : /* 277 */ array(),
861 : /* 278 */ array(),
862 : /* 279 */ array(),
863 : /* 280 */ array(),
864 : /* 281 */ array(),
865 : /* 282 */ array(),
866 : /* 283 */ array(),
867 : /* 284 */ array(),
868 : );
869 : static public $yy_default = array(
870 : /* 0 */ 440, 440, 440, 440, 440, 440, 440, 440, 440, 440,
871 : /* 10 */ 440, 440, 421, 382, 382, 382, 382, 440, 440, 440,
872 : /* 20 */ 440, 440, 440, 440, 440, 440, 440, 440, 440, 440,
873 : /* 30 */ 440, 440, 440, 440, 440, 440, 440, 440, 440, 440,
874 : /* 40 */ 440, 314, 440, 440, 347, 440, 314, 314, 314, 285,
875 : /* 50 */ 392, 392, 440, 440, 357, 357, 440, 440, 314, 440,
876 : /* 60 */ 440, 440, 440, 440, 440, 440, 440, 350, 440, 343,
877 : /* 70 */ 314, 350, 342, 440, 440, 440, 406, 396, 390, 397,
878 : /* 80 */ 402, 405, 401, 398, 440, 440, 387, 440, 440, 440,
879 : /* 90 */ 440, 440, 321, 440, 440, 440, 381, 440, 440, 424,
880 : /* 100 */ 440, 374, 440, 440, 440, 440, 440, 355, 375, 357,
881 : /* 110 */ 373, 440, 440, 376, 348, 440, 308, 423, 345, 323,
882 : /* 120 */ 422, 344, 393, 319, 370, 357, 315, 386, 357, 357,
883 : /* 130 */ 357, 386, 320, 440, 320, 440, 440, 440, 320, 440,
884 : /* 140 */ 440, 388, 440, 440, 440, 324, 328, 440, 332, 440,
885 : /* 150 */ 440, 440, 440, 440, 440, 440, 317, 346, 440, 440,
886 : /* 160 */ 440, 316, 440, 440, 440, 440, 440, 440, 440, 440,
887 : /* 170 */ 440, 368, 440, 440, 440, 361, 288, 364, 309, 367,
888 : /* 180 */ 434, 286, 435, 426, 431, 432, 429, 368, 428, 425,
889 : /* 190 */ 362, 365, 433, 377, 363, 287, 379, 310, 311, 427,
890 : /* 200 */ 318, 341, 340, 330, 359, 360, 326, 338, 358, 354,
891 : /* 210 */ 356, 352, 353, 339, 299, 302, 305, 327, 301, 300,
892 : /* 220 */ 383, 384, 430, 351, 371, 312, 303, 304, 298, 297,
893 : /* 230 */ 294, 295, 296, 313, 385, 335, 336, 372, 334, 333,
894 : /* 240 */ 324, 325, 331, 292, 322, 437, 439, 399, 400, 389,
895 : /* 250 */ 337, 412, 413, 414, 438, 436, 417, 391, 306, 416,
896 : /* 260 */ 415, 403, 404, 289, 411, 410, 418, 420, 419, 291,
897 : /* 270 */ 349, 366, 369, 328, 290, 380, 407, 408, 409, 395,
898 : /* 280 */ 394, 378, 329, 293, 307,
899 : );
900 : /* The next thing included is series of defines which control
901 : ** various aspects of the generated parser.
902 : ** self::YYNOCODE is a number which corresponds
903 : ** to no legal terminal or nonterminal number. This
904 : ** number is used to fill in empty slots of the hash
905 : ** table.
906 : ** self::YYFALLBACK If defined, this indicates that one or more tokens
907 : ** have fall-back values which should be used if the
908 : ** original value of the token will not parse.
909 : ** self::YYSTACKDEPTH is the maximum depth of the parser's stack.
910 : ** self::YYNSTATE the combined number of states.
911 : ** self::YYNRULE the number of rules in the grammar
912 : ** self::YYERRORSYMBOL is the code number of the error symbol. If not
913 : ** defined, then do no error processing.
914 : */
915 : const YYNOCODE = 110;
916 : const YYSTACKDEPTH = 100;
917 : const YYNSTATE = 285;
918 : const YYNRULE = 155;
919 : const YYERRORSYMBOL = 69;
920 : const YYERRSYMDT = 'yy0';
921 : const YYFALLBACK = 1;
922 : /** The next table maps tokens into fallback tokens. If a construct
923 : * like the following:
924 : *
925 : * %fallback ID X Y Z.
926 : *
927 : * appears in the grammer, then ID becomes a fallback token for X, Y,
928 : * and Z. Whenever one of the tokens X, Y, or Z is input to the parser
929 : * but it does not parse, the type of the token is changed to ID and
930 : * the parse is retried before an error is thrown.
931 : */
932 : static public $yyFallback = array(
933 : 0, /* $ => nothing */
934 : 0, /* OTHER => nothing */
935 : 1, /* XML => OTHER */
936 : 1, /* PHP => OTHER */
937 : 1, /* SHORTTAGSTART => OTHER */
938 : 1, /* SHORTTAGEND => OTHER */
939 : 1, /* PHPSTART => OTHER */
940 : 1, /* PHPEND => OTHER */
941 : 1, /* COMMENTEND => OTHER */
942 : 1, /* COMMENTSTART => OTHER */
943 : 1, /* SINGLEQUOTE => OTHER */
944 : 1, /* LITERALSTART => OTHER */
945 : 1, /* LITERALEND => OTHER */
946 : 1, /* LDELIMTAG => OTHER */
947 : 1, /* RDELIMTAG => OTHER */
948 : 1, /* LDELSLASH => OTHER */
949 : 1, /* LDEL => OTHER */
950 : 1, /* RDEL => OTHER */
951 : 1, /* ISIN => OTHER */
952 : 1, /* AS => OTHER */
953 : 1, /* BOOLEAN => OTHER */
954 : 1, /* NULL => OTHER */
955 : 1, /* IDENTITY => OTHER */
956 : 1, /* NONEIDENTITY => OTHER */
957 : 1, /* EQUALS => OTHER */
958 : 1, /* NOTEQUALS => OTHER */
959 : 1, /* GREATEREQUAL => OTHER */
960 : 1, /* LESSEQUAL => OTHER */
961 : 1, /* GREATERTHAN => OTHER */
962 : 1, /* LESSTHAN => OTHER */
963 : 1, /* NOT => OTHER */
964 : 1, /* LAND => OTHER */
965 : 1, /* LOR => OTHER */
966 : 1, /* LXOR => OTHER */
967 : 1, /* ISODDBY => OTHER */
968 : 1, /* ISNOTODDBY => OTHER */
969 : 1, /* ISODD => OTHER */
970 : 1, /* ISNOTODD => OTHER */
971 : 1, /* ISEVENBY => OTHER */
972 : 1, /* ISNOTEVENBY => OTHER */
973 : 1, /* ISEVEN => OTHER */
974 : 1, /* ISNOTEVEN => OTHER */
975 : 1, /* ISDIVBY => OTHER */
976 : 1, /* ISNOTDIVBY => OTHER */
977 : 1, /* OPENP => OTHER */
978 : 1, /* CLOSEP => OTHER */
979 : 1, /* OPENB => OTHER */
980 : 1, /* CLOSEB => OTHER */
981 : 1, /* PTR => OTHER */
982 : 1, /* APTR => OTHER */
983 : 1, /* EQUAL => OTHER */
984 : 1, /* INTEGER => OTHER */
985 : 1, /* INCDEC => OTHER */
986 : 1, /* UNIMATH => OTHER */
987 : 1, /* MATH => OTHER */
988 : 1, /* DOLLAR => OTHER */
989 : 1, /* COLON => OTHER */
990 : 1, /* DOUBLECOLON => OTHER */
991 : 1, /* SEMICOLON => OTHER */
992 : 1, /* AT => OTHER */
993 : 1, /* HATCH => OTHER */
994 : 1, /* QUOTE => OTHER */
995 : 1, /* BACKTICK => OTHER */
996 : 1, /* VERT => OTHER */
997 : 1, /* DOT => OTHER */
998 : 1, /* COMMA => OTHER */
999 : 1, /* ANDSYM => OTHER */
1000 : 1, /* ID => OTHER */
1001 : 1, /* SPACE => OTHER */
1002 : );
1003 : /**
1004 : * Turn parser tracing on by giving a stream to which to write the trace
1005 : * and a prompt to preface each trace message. Tracing is turned off
1006 : * by making either argument NULL
1007 : *
1008 : * Inputs:
1009 : *
1010 : * - A stream resource to which trace output should be written.
1011 : * If NULL, then tracing is turned off.
1012 : * - A prefix string written at the beginning of every
1013 : * line of trace output. If NULL, then tracing is
1014 : * turned off.
1015 : *
1016 : * Outputs:
1017 : *
1018 : * - None.
1019 : * @param resource
1020 : * @param string
1021 : */
1022 : static function Trace($TraceFILE, $zTracePrompt)
1023 : {
1024 0 : if (!$TraceFILE) {
1025 0 : $zTracePrompt = 0;
1026 0 : } elseif (!$zTracePrompt) {
1027 0 : $TraceFILE = 0;
1028 0 : }
1029 0 : self::$yyTraceFILE = $TraceFILE;
1030 0 : self::$yyTracePrompt = $zTracePrompt;
1031 0 : }
1032 :
1033 : /**
1034 : * Output debug information to output (php://output stream)
1035 : */
1036 : static function PrintTrace()
1037 : {
1038 0 : self::$yyTraceFILE = fopen('php://output', 'w');
1039 0 : self::$yyTracePrompt = '<br>';
1040 0 : }
1041 :
1042 : /**
1043 : * @var resource|0
1044 : */
1045 : static public $yyTraceFILE;
1046 : /**
1047 : * String to prepend to debug output
1048 : * @var string|0
1049 : */
1050 : static public $yyTracePrompt;
1051 : /**
1052 : * @var int
1053 : */
1054 : public $yyidx; /* Index of top element in stack */
1055 : /**
1056 : * @var int
1057 : */
1058 : public $yyerrcnt; /* Shifts left before out of the error */
1059 : /**
1060 : * @var array
1061 : */
1062 : public $yystack = array(); /* The parser's stack */
1063 :
1064 : /**
1065 : * For tracing shifts, the names of all terminals and nonterminals
1066 : * are required. The following table supplies these names
1067 : * @var array
1068 : */
1069 : public $yyTokenName = array(
1070 : '$', 'OTHER', 'XML', 'PHP',
1071 : 'SHORTTAGSTART', 'SHORTTAGEND', 'PHPSTART', 'PHPEND',
1072 : 'COMMENTEND', 'COMMENTSTART', 'SINGLEQUOTE', 'LITERALSTART',
1073 : 'LITERALEND', 'LDELIMTAG', 'RDELIMTAG', 'LDELSLASH',
1074 : 'LDEL', 'RDEL', 'ISIN', 'AS',
1075 : 'BOOLEAN', 'NULL', 'IDENTITY', 'NONEIDENTITY',
1076 : 'EQUALS', 'NOTEQUALS', 'GREATEREQUAL', 'LESSEQUAL',
1077 : 'GREATERTHAN', 'LESSTHAN', 'NOT', 'LAND',
1078 : 'LOR', 'LXOR', 'ISODDBY', 'ISNOTODDBY',
1079 : 'ISODD', 'ISNOTODD', 'ISEVENBY', 'ISNOTEVENBY',
1080 : 'ISEVEN', 'ISNOTEVEN', 'ISDIVBY', 'ISNOTDIVBY',
1081 : 'OPENP', 'CLOSEP', 'OPENB', 'CLOSEB',
1082 : 'PTR', 'APTR', 'EQUAL', 'INTEGER',
1083 : 'INCDEC', 'UNIMATH', 'MATH', 'DOLLAR',
1084 : 'COLON', 'DOUBLECOLON', 'SEMICOLON', 'AT',
1085 : 'HATCH', 'QUOTE', 'BACKTICK', 'VERT',
1086 : 'DOT', 'COMMA', 'ANDSYM', 'ID',
1087 : 'SPACE', 'error', 'start', 'template',
1088 : 'template_element', 'smartytag', 'text', 'varindexed',
1089 : 'expr', 'attributes', 'modifier', 'modparameters',
1090 : 'ifexprs', 'statement', 'statements', 'varvar',
1091 : 'foraction', 'value', 'array', 'attribute',
1092 : 'exprs', 'math', 'variable', 'function',
1093 : 'doublequoted', 'method', 'params', 'objectchain',
1094 : 'arrayindex', 'object', 'indexdef', 'varvarele',
1095 : 'objectelement', 'modparameter', 'ifexpr', 'ifcond',
1096 : 'lop', 'arrayelements', 'arrayelement', 'doublequotedcontent',
1097 : 'textelement',
1098 : );
1099 :
1100 : /**
1101 : * For tracing reduce actions, the names of all rules are required.
1102 : * @var array
1103 : */
1104 : static public $yyRuleName = array(
1105 : /* 0 */ "start ::= template",
1106 : /* 1 */ "template ::= template_element",
1107 : /* 2 */ "template ::= template template_element",
1108 : /* 3 */ "template_element ::= smartytag",
1109 : /* 4 */ "template_element ::= COMMENTSTART text COMMENTEND",
1110 : /* 5 */ "template_element ::= LITERALSTART text LITERALEND",
1111 : /* 6 */ "template_element ::= LDELIMTAG",
1112 : /* 7 */ "template_element ::= RDELIMTAG",
1113 : /* 8 */ "template_element ::= PHP text SHORTTAGEND",
1114 : /* 9 */ "template_element ::= SHORTTAGSTART DOLLAR ID SHORTTAGEND",
1115 : /* 10 */ "template_element ::= XML",
1116 : /* 11 */ "template_element ::= SHORTTAGEND",
1117 : /* 12 */ "template_element ::= OTHER",
1118 : /* 13 */ "smartytag ::= LDEL varindexed EQUAL expr attributes RDEL",
1119 : /* 14 */ "smartytag ::= LDEL expr attributes RDEL",
1120 : /* 15 */ "smartytag ::= LDEL ID attributes RDEL",
1121 : /* 16 */ "smartytag ::= LDEL ID PTR ID attributes RDEL",
1122 : /* 17 */ "smartytag ::= LDEL ID modifier modparameters attributes RDEL",
1123 : /* 18 */ "smartytag ::= LDELSLASH ID attributes RDEL",
1124 : /* 19 */ "smartytag ::= LDELSLASH ID PTR ID RDEL",
1125 : /* 20 */ "smartytag ::= LDEL ID SPACE ifexprs RDEL",
1126 : /* 21 */ "smartytag ::= LDEL ID SPACE statement RDEL",
1127 : /* 22 */ "smartytag ::= LDEL ID SPACE statements SEMICOLON ifexprs SEMICOLON DOLLAR varvar foraction RDEL",
1128 : /* 23 */ "foraction ::= EQUAL expr",
1129 : /* 24 */ "foraction ::= INCDEC",
1130 : /* 25 */ "smartytag ::= LDEL ID SPACE value AS DOLLAR varvar RDEL",
1131 : /* 26 */ "smartytag ::= LDEL ID SPACE array AS DOLLAR varvar RDEL",
1132 : /* 27 */ "attributes ::= attributes attribute",
1133 : /* 28 */ "attributes ::= attribute",
1134 : /* 29 */ "attributes ::=",
1135 : /* 30 */ "attribute ::= SPACE ID EQUAL expr",
1136 : /* 31 */ "attribute ::= SPACE ID",
1137 : /* 32 */ "statements ::= statement",
1138 : /* 33 */ "statements ::= statements COMMA statement",
1139 : /* 34 */ "statement ::= DOLLAR varvar EQUAL expr",
1140 : /* 35 */ "expr ::= ID",
1141 : /* 36 */ "expr ::= exprs",
1142 : /* 37 */ "expr ::= DOLLAR ID COLON ID",
1143 : /* 38 */ "expr ::= expr modifier modparameters",
1144 : /* 39 */ "exprs ::= value",
1145 : /* 40 */ "exprs ::= UNIMATH value",
1146 : /* 41 */ "exprs ::= exprs math value",
1147 : /* 42 */ "exprs ::= exprs ANDSYM value",
1148 : /* 43 */ "exprs ::= array",
1149 : /* 44 */ "math ::= UNIMATH",
1150 : /* 45 */ "math ::= MATH",
1151 : /* 46 */ "value ::= variable",
1152 : /* 47 */ "value ::= INTEGER",
1153 : /* 48 */ "value ::= INTEGER DOT INTEGER",
1154 : /* 49 */ "value ::= BOOLEAN",
1155 : /* 50 */ "value ::= NULL",
1156 : /* 51 */ "value ::= function",
1157 : /* 52 */ "value ::= OPENP expr CLOSEP",
1158 : /* 53 */ "value ::= SINGLEQUOTE text SINGLEQUOTE",
1159 : /* 54 */ "value ::= SINGLEQUOTE SINGLEQUOTE",
1160 : /* 55 */ "value ::= QUOTE doublequoted QUOTE",
1161 : /* 56 */ "value ::= QUOTE QUOTE",
1162 : /* 57 */ "value ::= ID DOUBLECOLON method",
1163 : /* 58 */ "value ::= ID DOUBLECOLON DOLLAR ID OPENP params CLOSEP",
1164 : /* 59 */ "value ::= ID DOUBLECOLON method objectchain",
1165 : /* 60 */ "value ::= ID DOUBLECOLON DOLLAR ID OPENP params CLOSEP objectchain",
1166 : /* 61 */ "value ::= ID DOUBLECOLON ID",
1167 : /* 62 */ "value ::= ID DOUBLECOLON DOLLAR ID arrayindex",
1168 : /* 63 */ "value ::= ID DOUBLECOLON DOLLAR ID arrayindex objectchain",
1169 : /* 64 */ "value ::= smartytag",
1170 : /* 65 */ "variable ::= varindexed",
1171 : /* 66 */ "variable ::= DOLLAR varvar AT ID",
1172 : /* 67 */ "variable ::= object",
1173 : /* 68 */ "variable ::= HATCH ID HATCH",
1174 : /* 69 */ "variable ::= HATCH variable HATCH",
1175 : /* 70 */ "varindexed ::= DOLLAR varvar arrayindex",
1176 : /* 71 */ "arrayindex ::= arrayindex indexdef",
1177 : /* 72 */ "arrayindex ::=",
1178 : /* 73 */ "indexdef ::= DOT ID",
1179 : /* 74 */ "indexdef ::= DOT INTEGER",
1180 : /* 75 */ "indexdef ::= DOT variable",
1181 : /* 76 */ "indexdef ::= DOT LDEL exprs RDEL",
1182 : /* 77 */ "indexdef ::= OPENB ID CLOSEB",
1183 : /* 78 */ "indexdef ::= OPENB ID DOT ID CLOSEB",
1184 : /* 79 */ "indexdef ::= OPENB exprs CLOSEB",
1185 : /* 80 */ "indexdef ::= OPENB CLOSEB",
1186 : /* 81 */ "varvar ::= varvarele",
1187 : /* 82 */ "varvar ::= varvar varvarele",
1188 : /* 83 */ "varvarele ::= ID",
1189 : /* 84 */ "varvarele ::= LDEL expr RDEL",
1190 : /* 85 */ "object ::= varindexed objectchain",
1191 : /* 86 */ "objectchain ::= objectelement",
1192 : /* 87 */ "objectchain ::= objectchain objectelement",
1193 : /* 88 */ "objectelement ::= PTR ID arrayindex",
1194 : /* 89 */ "objectelement ::= PTR variable arrayindex",
1195 : /* 90 */ "objectelement ::= PTR LDEL expr RDEL arrayindex",
1196 : /* 91 */ "objectelement ::= PTR ID LDEL expr RDEL arrayindex",
1197 : /* 92 */ "objectelement ::= PTR method",
1198 : /* 93 */ "function ::= ID OPENP params CLOSEP",
1199 : /* 94 */ "method ::= ID OPENP params CLOSEP",
1200 : /* 95 */ "params ::= expr COMMA params",
1201 : /* 96 */ "params ::= expr",
1202 : /* 97 */ "params ::=",
1203 : /* 98 */ "modifier ::= VERT AT ID",
1204 : /* 99 */ "modifier ::= VERT ID",
1205 : /* 100 */ "modparameters ::= modparameters modparameter",
1206 : /* 101 */ "modparameters ::=",
1207 : /* 102 */ "modparameter ::= COLON exprs",
1208 : /* 103 */ "modparameter ::= COLON ID",
1209 : /* 104 */ "ifexprs ::= ifexpr",
1210 : /* 105 */ "ifexprs ::= NOT ifexprs",
1211 : /* 106 */ "ifexprs ::= OPENP ifexprs CLOSEP",
1212 : /* 107 */ "ifexpr ::= expr",
1213 : /* 108 */ "ifexpr ::= expr ifcond expr",
1214 : /* 109 */ "ifexpr ::= expr ISIN array",
1215 : /* 110 */ "ifexpr ::= expr ISIN value",
1216 : /* 111 */ "ifexpr ::= ifexprs lop ifexprs",
1217 : /* 112 */ "ifexpr ::= ifexprs ISDIVBY ifexprs",
1218 : /* 113 */ "ifexpr ::= ifexprs ISNOTDIVBY ifexprs",
1219 : /* 114 */ "ifexpr ::= ifexprs ISEVEN",
1220 : /* 115 */ "ifexpr ::= ifexprs ISNOTEVEN",
1221 : /* 116 */ "ifexpr ::= ifexprs ISEVENBY ifexprs",
1222 : /* 117 */ "ifexpr ::= ifexprs ISNOTEVENBY ifexprs",
1223 : /* 118 */ "ifexpr ::= ifexprs ISODD",
1224 : /* 119 */ "ifexpr ::= ifexprs ISNOTODD",
1225 : /* 120 */ "ifexpr ::= ifexprs ISODDBY ifexprs",
1226 : /* 121 */ "ifexpr ::= ifexprs ISNOTODDBY ifexprs",
1227 : /* 122 */ "ifcond ::= EQUALS",
1228 : /* 123 */ "ifcond ::= NOTEQUALS",
1229 : /* 124 */ "ifcond ::= GREATERTHAN",
1230 : /* 125 */ "ifcond ::= LESSTHAN",
1231 : /* 126 */ "ifcond ::= GREATEREQUAL",
1232 : /* 127 */ "ifcond ::= LESSEQUAL",
1233 : /* 128 */ "ifcond ::= IDENTITY",
1234 : /* 129 */ "ifcond ::= NONEIDENTITY",
1235 : /* 130 */ "lop ::= LAND",
1236 : /* 131 */ "lop ::= LOR",
1237 : /* 132 */ "lop ::= LXOR",
1238 : /* 133 */ "array ::= OPENB arrayelements CLOSEB",
1239 : /* 134 */ "arrayelements ::= arrayelement",
1240 : /* 135 */ "arrayelements ::= arrayelements COMMA arrayelement",
1241 : /* 136 */ "arrayelements ::=",
1242 : /* 137 */ "arrayelement ::= expr APTR expr",
1243 : /* 138 */ "arrayelement ::= ID APTR expr",
1244 : /* 139 */ "arrayelement ::= expr",
1245 : /* 140 */ "doublequoted ::= doublequoted doublequotedcontent",
1246 : /* 141 */ "doublequoted ::= doublequotedcontent",
1247 : /* 142 */ "doublequotedcontent ::= BACKTICK ID BACKTICK",
1248 : /* 143 */ "doublequotedcontent ::= BACKTICK variable BACKTICK",
1249 : /* 144 */ "doublequotedcontent ::= DOLLAR ID",
1250 : /* 145 */ "doublequotedcontent ::= LDEL expr RDEL",
1251 : /* 146 */ "doublequotedcontent ::= smartytag",
1252 : /* 147 */ "doublequotedcontent ::= DOLLAR OTHER",
1253 : /* 148 */ "doublequotedcontent ::= LDEL OTHER",
1254 : /* 149 */ "doublequotedcontent ::= BACKTICK OTHER",
1255 : /* 150 */ "doublequotedcontent ::= OTHER",
1256 : /* 151 */ "text ::= text textelement",
1257 : /* 152 */ "text ::= textelement",
1258 : /* 153 */ "textelement ::= OTHER",
1259 : /* 154 */ "textelement ::= LDEL",
1260 : );
1261 :
1262 : /**
1263 : * This function returns the symbolic name associated with a token
1264 : * value.
1265 : * @param int
1266 : * @return string
1267 : */
1268 : function tokenName($tokenType)
1269 : {
1270 0 : if ($tokenType === 0) {
1271 0 : return 'End of Input';
1272 : }
1273 0 : if ($tokenType > 0 && $tokenType < count($this->yyTokenName)) {
1274 0 : return $this->yyTokenName[$tokenType];
1275 : } else {
1276 0 : return "Unknown";
1277 : }
1278 : }
1279 :
1280 : /**
1281 : * The following function deletes the value associated with a
1282 : * symbol. The symbol can be either a terminal or nonterminal.
1283 : * @param int the symbol code
1284 : * @param mixed the symbol's value
1285 : */
1286 : static function yy_destructor($yymajor, $yypminor)
1287 : {
1288 : switch ($yymajor) {
1289 : /* Here is inserted the actions which take place when a
1290 : ** terminal or non-terminal is destroyed. This can happen
1291 : ** when the symbol is popped from the stack during a
1292 : ** reduce or during error processing or when a parser is
1293 : ** being destroyed before it is finished parsing.
1294 : **
1295 : ** Note: during a reduce, the only symbols destroyed are those
1296 : ** which appear on the RHS of the rule, but which are not used
1297 : ** inside the C code.
1298 : */
1299 330 : default: break; /* If no destructor action specified: do nothing */
1300 330 : }
1301 330 : }
1302 :
1303 : /**
1304 : * Pop the parser's stack once.
1305 : *
1306 : * If there is a destructor routine associated with the token which
1307 : * is popped from the stack, then call it.
1308 : *
1309 : * Return the major token number for the symbol popped.
1310 : * @param TP_yyParser
1311 : * @return int
1312 : */
1313 : function yy_pop_parser_stack()
1314 : {
1315 330 : if (!count($this->yystack)) {
1316 0 : return;
1317 : }
1318 330 : $yytos = array_pop($this->yystack);
1319 330 : if (self::$yyTraceFILE && $this->yyidx >= 0) {
1320 0 : fwrite(self::$yyTraceFILE,
1321 0 : self::$yyTracePrompt . 'Popping ' . $this->yyTokenName[$yytos->major] .
1322 0 : "\n");
1323 0 : }
1324 330 : $yymajor = $yytos->major;
1325 330 : self::yy_destructor($yymajor, $yytos->minor);
1326 330 : $this->yyidx--;
1327 330 : return $yymajor;
1328 : }
1329 :
1330 : /**
1331 : * Deallocate and destroy a parser. Destructors are all called for
1332 : * all stack elements before shutting the parser down.
1333 : */
1334 : function __destruct()
1335 : {
1336 332 : while ($this->yyidx >= 0) {
1337 4 : $this->yy_pop_parser_stack();
1338 4 : }
1339 332 : if (is_resource(self::$yyTraceFILE)) {
1340 0 : fclose(self::$yyTraceFILE);
1341 0 : }
1342 332 : }
1343 :
1344 : /**
1345 : * Based on the current state and parser stack, get a list of all
1346 : * possible lookahead tokens
1347 : * @param int
1348 : * @return array
1349 : */
1350 : function yy_get_expected_tokens($token)
1351 : {
1352 1 : $state = $this->yystack[$this->yyidx]->stateno;
1353 1 : $expected = self::$yyExpectedTokens[$state];
1354 1 : if (in_array($token, self::$yyExpectedTokens[$state], true)) {
1355 0 : return $expected;
1356 : }
1357 1 : $stack = $this->yystack;
1358 1 : $yyidx = $this->yyidx;
1359 : do {
1360 1 : $yyact = $this->yy_find_shift_action($token);
1361 1 : if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
1362 : // reduce action
1363 0 : $done = 0;
1364 : do {
1365 0 : if ($done++ == 100) {
1366 0 : $this->yyidx = $yyidx;
1367 0 : $this->yystack = $stack;
1368 : // too much recursion prevents proper detection
1369 : // so give up
1370 0 : return array_unique($expected);
1371 : }
1372 0 : $yyruleno = $yyact - self::YYNSTATE;
1373 0 : $this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs'];
1374 0 : $nextstate = $this->yy_find_reduce_action(
1375 0 : $this->yystack[$this->yyidx]->stateno,
1376 0 : self::$yyRuleInfo[$yyruleno]['lhs']);
1377 0 : if (isset(self::$yyExpectedTokens[$nextstate])) {
1378 0 : $expected += self::$yyExpectedTokens[$nextstate];
1379 0 : if (in_array($token,
1380 0 : self::$yyExpectedTokens[$nextstate], true)) {
1381 0 : $this->yyidx = $yyidx;
1382 0 : $this->yystack = $stack;
1383 0 : return array_unique($expected);
1384 : }
1385 0 : }
1386 0 : if ($nextstate < self::YYNSTATE) {
1387 : // we need to shift a non-terminal
1388 0 : $this->yyidx++;
1389 0 : $x = new TP_yyStackEntry;
1390 0 : $x->stateno = $nextstate;
1391 0 : $x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
1392 0 : $this->yystack[$this->yyidx] = $x;
1393 0 : continue 2;
1394 0 : } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
1395 0 : $this->yyidx = $yyidx;
1396 0 : $this->yystack = $stack;
1397 : // the last token was just ignored, we can't accept
1398 : // by ignoring input, this is in essence ignoring a
1399 : // syntax error!
1400 0 : return array_unique($expected);
1401 0 : } elseif ($nextstate === self::YY_NO_ACTION) {
1402 0 : $this->yyidx = $yyidx;
1403 0 : $this->yystack = $stack;
1404 : // input accepted, but not shifted (I guess)
1405 0 : return $expected;
1406 : } else {
1407 0 : $yyact = $nextstate;
1408 : }
1409 0 : } while (true);
1410 0 : }
1411 1 : break;
1412 0 : } while (true);
1413 1 : return array_unique($expected);
1414 : }
1415 :
1416 : /**
1417 : * Based on the parser state and current parser stack, determine whether
1418 : * the lookahead token is possible.
1419 : *
1420 : * The parser will convert the token value to an error token if not. This
1421 : * catches some unusual edge cases where the parser would fail.
1422 : * @param int
1423 : * @return bool
1424 : */
1425 : function yy_is_expected_token($token)
1426 : {
1427 343 : if ($token === 0) {
1428 337 : return true; // 0 is not part of this
1429 : }
1430 343 : $state = $this->yystack[$this->yyidx]->stateno;
1431 343 : if (in_array($token, self::$yyExpectedTokens[$state], true)) {
1432 331 : return true;
1433 : }
1434 342 : $stack = $this->yystack;
1435 342 : $yyidx = $this->yyidx;
1436 : do {
1437 342 : $yyact = $this->yy_find_shift_action($token);
1438 342 : if ($yyact >= self::YYNSTATE && $yyact < self::YYNSTATE + self::YYNRULE) {
1439 : // reduce action
1440 341 : $done = 0;
1441 : do {
1442 341 : if ($done++ == 100) {
1443 0 : $this->yyidx = $yyidx;
1444 0 : $this->yystack = $stack;
1445 : // too much recursion prevents proper detection
1446 : // so give up
1447 0 : return true;
1448 : }
1449 341 : $yyruleno = $yyact - self::YYNSTATE;
1450 341 : $this->yyidx -= self::$yyRuleInfo[$yyruleno]['rhs'];
1451 341 : $nextstate = $this->yy_find_reduce_action(
1452 341 : $this->yystack[$this->yyidx]->stateno,
1453 341 : self::$yyRuleInfo[$yyruleno]['lhs']);
1454 341 : if (isset(self::$yyExpectedTokens[$nextstate]) &&
1455 341 : in_array($token, self::$yyExpectedTokens[$nextstate], true)) {
1456 329 : $this->yyidx = $yyidx;
1457 329 : $this->yystack = $stack;
1458 329 : return true;
1459 : }
1460 336 : if ($nextstate < self::YYNSTATE) {
1461 : // we need to shift a non-terminal
1462 336 : $this->yyidx++;
1463 336 : $x = new TP_yyStackEntry;
1464 336 : $x->stateno = $nextstate;
1465 336 : $x->major = self::$yyRuleInfo[$yyruleno]['lhs'];
1466 336 : $this->yystack[$this->yyidx] = $x;
1467 336 : continue 2;
1468 0 : } elseif ($nextstate == self::YYNSTATE + self::YYNRULE + 1) {
1469 0 : $this->yyidx = $yyidx;
1470 0 : $this->yystack = $stack;
1471 0 : if (!$token) {
1472 : // end of input: this is valid
1473 0 : return true;
1474 : }
1475 : // the last token was just ignored, we can't accept
1476 : // by ignoring input, this is in essence ignoring a
1477 : // syntax error!
1478 0 : return false;
1479 0 : } elseif ($nextstate === self::YY_NO_ACTION) {
1480 0 : $this->yyidx = $yyidx;
1481 0 : $this->yystack = $stack;
1482 : // input accepted, but not shifted (I guess)
1483 0 : return true;
1484 : } else {
1485 0 : $yyact = $nextstate;
1486 : }
1487 0 : } while (true);
1488 0 : }
1489 253 : break;
1490 0 : } while (true);
1491 253 : $this->yyidx = $yyidx;
1492 253 : $this->yystack = $stack;
1493 253 : return true;
1494 : }
1495 :
1496 : /**
1497 : * Find the appropriate action for a parser given the terminal
1498 : * look-ahead token iLookAhead.
1499 : *
1500 : * If the look-ahead token is YYNOCODE, then check to see if the action is
1501 : * independent of the look-ahead. If it is, return the action, otherwise
1502 : * return YY_NO_ACTION.
1503 : * @param int The look-ahead token
1504 : */
1505 : function yy_find_shift_action($iLookAhead)
1506 : {
1507 343 : $stateno = $this->yystack[$this->yyidx]->stateno;
1508 :
1509 : /* if ($this->yyidx < 0) return self::YY_NO_ACTION; */
1510 343 : if (!isset(self::$yy_shift_ofst[$stateno])) {
1511 : // no shift actions
1512 342 : return self::$yy_default[$stateno];
1513 : }
1514 343 : $i = self::$yy_shift_ofst[$stateno];
1515 343 : if ($i === self::YY_SHIFT_USE_DFLT) {
1516 16 : return self::$yy_default[$stateno];
1517 : }
1518 343 : if ($iLookAhead == self::YYNOCODE) {
1519 0 : return self::YY_NO_ACTION;
1520 : }
1521 343 : $i += $iLookAhead;
1522 343 : if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
1523 343 : self::$yy_lookahead[$i] != $iLookAhead) {
1524 343 : if (count(self::$yyFallback) && $iLookAhead < count(self::$yyFallback)
1525 343 : && ($iFallback = self::$yyFallback[$iLookAhead]) != 0) {
1526 342 : if (self::$yyTraceFILE) {
1527 0 : fwrite(self::$yyTraceFILE, self::$yyTracePrompt . "FALLBACK " .
1528 0 : $this->yyTokenName[$iLookAhead] . " => " .
1529 0 : $this->yyTokenName[$iFallback] . "\n");
1530 0 : }
1531 342 : return $this->yy_find_shift_action($iFallback);
1532 : }
1533 343 : return self::$yy_default[$stateno];
1534 : } else {
1535 343 : return self::$yy_action[$i];
1536 : }
1537 : }
1538 :
1539 : /**
1540 : * Find the appropriate action for a parser given the non-terminal
1541 : * look-ahead token $iLookAhead.
1542 : *
1543 : * If the look-ahead token is self::YYNOCODE, then check to see if the action is
1544 : * independent of the look-ahead. If it is, return the action, otherwise
1545 : * return self::YY_NO_ACTION.
1546 : * @param int Current state number
1547 : * @param int The look-ahead token
1548 : */
1549 : function yy_find_reduce_action($stateno, $iLookAhead)
1550 : {
1551 : /* $stateno = $this->yystack[$this->yyidx]->stateno; */
1552 :
1553 342 : if (!isset(self::$yy_reduce_ofst[$stateno])) {
1554 0 : return self::$yy_default[$stateno];
1555 : }
1556 342 : $i = self::$yy_reduce_ofst[$stateno];
1557 342 : if ($i == self::YY_REDUCE_USE_DFLT) {
1558 0 : return self::$yy_default[$stateno];
1559 : }
1560 342 : if ($iLookAhead == self::YYNOCODE) {
1561 0 : return self::YY_NO_ACTION;
1562 : }
1563 342 : $i += $iLookAhead;
1564 342 : if ($i < 0 || $i >= self::YY_SZ_ACTTAB ||
1565 342 : self::$yy_lookahead[$i] != $iLookAhead) {
1566 0 : return self::$yy_default[$stateno];
1567 : } else {
1568 342 : return self::$yy_action[$i];
1569 : }
1570 : }
1571 :
1572 : /**
1573 : * Perform a shift action.
1574 : * @param int The new state to shift in
1575 : * @param int The major token to shift in
1576 : * @param mixed the minor token to shift in
1577 : */
1578 : function yy_shift($yyNewState, $yyMajor, $yypMinor)
1579 : {
1580 343 : $this->yyidx++;
1581 343 : if ($this->yyidx >= self::YYSTACKDEPTH) {
1582 0 : $this->yyidx--;
1583 0 : if (self::$yyTraceFILE) {
1584 0 : fprintf(self::$yyTraceFILE, "%sStack Overflow!\n", self::$yyTracePrompt);
1585 0 : }
1586 0 : while ($this->yyidx >= 0) {
1587 0 : $this->yy_pop_parser_stack();
1588 0 : }
1589 : /* Here code is inserted which will execute if the parser
1590 : ** stack ever overflows */
1591 0 : return;
1592 : }
1593 343 : $yytos = new TP_yyStackEntry;
1594 343 : $yytos->stateno = $yyNewState;
1595 343 : $yytos->major = $yyMajor;
1596 343 : $yytos->minor = $yypMinor;
1597 343 : array_push($this->yystack, $yytos);
1598 343 : if (self::$yyTraceFILE && $this->yyidx > 0) {
1599 0 : fprintf(self::$yyTraceFILE, "%sShift %d\n", self::$yyTracePrompt,
1600 0 : $yyNewState);
1601 0 : fprintf(self::$yyTraceFILE, "%sStack:", self::$yyTracePrompt);
1602 0 : for($i = 1; $i <= $this->yyidx; $i++) {
1603 0 : fprintf(self::$yyTraceFILE, " %s",
1604 0 : $this->yyTokenName[$this->yystack[$i]->major]);
1605 0 : }
1606 0 : fwrite(self::$yyTraceFILE,"\n");
1607 0 : }
1608 343 : }
1609 :
1610 : /**
1611 : * The following table contains information about every rule that
1612 : * is used during the reduce.
1613 : *
1614 : * <pre>
1615 : * array(
1616 : * array(
1617 : * int $lhs; Symbol on the left-hand side of the rule
1618 : * int $nrhs; Number of right-hand side symbols in the rule
1619 : * ),...
1620 : * );
1621 : * </pre>
1622 : */
1623 : static public $yyRuleInfo = array(
1624 : array( 'lhs' => 70, 'rhs' => 1 ),
1625 : array( 'lhs' => 71, 'rhs' => 1 ),
1626 : array( 'lhs' => 71, 'rhs' => 2 ),
1627 : array( 'lhs' => 72, 'rhs' => 1 ),
1628 : array( 'lhs' => 72, 'rhs' => 3 ),
1629 : array( 'lhs' => 72, 'rhs' => 3 ),
1630 : array( 'lhs' => 72, 'rhs' => 1 ),
1631 : array( 'lhs' => 72, 'rhs' => 1 ),
1632 : array( 'lhs' => 72, 'rhs' => 3 ),
1633 : array( 'lhs' => 72, 'rhs' => 4 ),
1634 : array( 'lhs' => 72, 'rhs' => 1 ),
1635 : array( 'lhs' => 72, 'rhs' => 1 ),
1636 : array( 'lhs' => 72, 'rhs' => 1 ),
1637 : array( 'lhs' => 73, 'rhs' => 6 ),
1638 : array( 'lhs' => 73, 'rhs' => 4 ),
1639 : array( 'lhs' => 73, 'rhs' => 4 ),
1640 : array( 'lhs' => 73, 'rhs' => 6 ),
1641 : array( 'lhs' => 73, 'rhs' => 6 ),
1642 : array( 'lhs' => 73, 'rhs' => 4 ),
1643 : array( 'lhs' => 73, 'rhs' => 5 ),
1644 : array( 'lhs' => 73, 'rhs' => 5 ),
1645 : array( 'lhs' => 73, 'rhs' => 5 ),
1646 : array( 'lhs' => 73, 'rhs' => 11 ),
1647 : array( 'lhs' => 84, 'rhs' => 2 ),
1648 : array( 'lhs' => 84, 'rhs' => 1 ),
1649 : array( 'lhs' => 73, 'rhs' => 8 ),
1650 : array( 'lhs' => 73, 'rhs' => 8 ),
1651 : array( 'lhs' => 77, 'rhs' => 2 ),
1652 : array( 'lhs' => 77, 'rhs' => 1 ),
1653 : array( 'lhs' => 77, 'rhs' => 0 ),
1654 : array( 'lhs' => 87, 'rhs' => 4 ),
1655 : array( 'lhs' => 87, 'rhs' => 2 ),
1656 : array( 'lhs' => 82, 'rhs' => 1 ),
1657 : array( 'lhs' => 82, 'rhs' => 3 ),
1658 : array( 'lhs' => 81, 'rhs' => 4 ),
1659 : array( 'lhs' => 76, 'rhs' => 1 ),
1660 : array( 'lhs' => 76, 'rhs' => 1 ),
1661 : array( 'lhs' => 76, 'rhs' => 4 ),
1662 : array( 'lhs' => 76, 'rhs' => 3 ),
1663 : array( 'lhs' => 88, 'rhs' => 1 ),
1664 : array( 'lhs' => 88, 'rhs' => 2 ),
1665 : array( 'lhs' => 88, 'rhs' => 3 ),
1666 : array( 'lhs' => 88, 'rhs' => 3 ),
1667 : array( 'lhs' => 88, 'rhs' => 1 ),
1668 : array( 'lhs' => 89, 'rhs' => 1 ),
1669 : array( 'lhs' => 89, 'rhs' => 1 ),
1670 : array( 'lhs' => 85, 'rhs' => 1 ),
1671 : array( 'lhs' => 85, 'rhs' => 1 ),
1672 : array( 'lhs' => 85, 'rhs' => 3 ),
1673 : array( 'lhs' => 85, 'rhs' => 1 ),
1674 : array( 'lhs' => 85, 'rhs' => 1 ),
1675 : array( 'lhs' => 85, 'rhs' => 1 ),
1676 : array( 'lhs' => 85, 'rhs' => 3 ),
1677 : array( 'lhs' => 85, 'rhs' => 3 ),
1678 : array( 'lhs' => 85, 'rhs' => 2 ),
1679 : array( 'lhs' => 85, 'rhs' => 3 ),
1680 : array( 'lhs' => 85, 'rhs' => 2 ),
1681 : array( 'lhs' => 85, 'rhs' => 3 ),
1682 : array( 'lhs' => 85, 'rhs' => 7 ),
1683 : array( 'lhs' => 85, 'rhs' => 4 ),
1684 : array( 'lhs' => 85, 'rhs' => 8 ),
1685 : array( 'lhs' => 85, 'rhs' => 3 ),
1686 : array( 'lhs' => 85, 'rhs' => 5 ),
1687 : array( 'lhs' => 85, 'rhs' => 6 ),
1688 : array( 'lhs' => 85, 'rhs' => 1 ),
1689 : array( 'lhs' => 90, 'rhs' => 1 ),
1690 : array( 'lhs' => 90, 'rhs' => 4 ),
1691 : array( 'lhs' => 90, 'rhs' => 1 ),
1692 : array( 'lhs' => 90, 'rhs' => 3 ),
1693 : array( 'lhs' => 90, 'rhs' => 3 ),
1694 : array( 'lhs' => 75, 'rhs' => 3 ),
1695 : array( 'lhs' => 96, 'rhs' => 2 ),
1696 : array( 'lhs' => 96, 'rhs' => 0 ),
1697 : array( 'lhs' => 98, 'rhs' => 2 ),
1698 : array( 'lhs' => 98, 'rhs' => 2 ),
1699 : array( 'lhs' => 98, 'rhs' => 2 ),
1700 : array( 'lhs' => 98, 'rhs' => 4 ),
1701 : array( 'lhs' => 98, 'rhs' => 3 ),
1702 : array( 'lhs' => 98, 'rhs' => 5 ),
1703 : array( 'lhs' => 98, 'rhs' => 3 ),
1704 : array( 'lhs' => 98, 'rhs' => 2 ),
1705 : array( 'lhs' => 83, 'rhs' => 1 ),
1706 : array( 'lhs' => 83, 'rhs' => 2 ),
1707 : array( 'lhs' => 99, 'rhs' => 1 ),
1708 : array( 'lhs' => 99, 'rhs' => 3 ),
1709 : array( 'lhs' => 97, 'rhs' => 2 ),
1710 : array( 'lhs' => 95, 'rhs' => 1 ),
1711 : array( 'lhs' => 95, 'rhs' => 2 ),
1712 : array( 'lhs' => 100, 'rhs' => 3 ),
1713 : array( 'lhs' => 100, 'rhs' => 3 ),
1714 : array( 'lhs' => 100, 'rhs' => 5 ),
1715 : array( 'lhs' => 100, 'rhs' => 6 ),
1716 : array( 'lhs' => 100, 'rhs' => 2 ),
1717 : array( 'lhs' => 91, 'rhs' => 4 ),
1718 : array( 'lhs' => 93, 'rhs' => 4 ),
1719 : array( 'lhs' => 94, 'rhs' => 3 ),
1720 : array( 'lhs' => 94, 'rhs' => 1 ),
1721 : array( 'lhs' => 94, 'rhs' => 0 ),
1722 : array( 'lhs' => 78, 'rhs' => 3 ),
1723 : array( 'lhs' => 78, 'rhs' => 2 ),
1724 : array( 'lhs' => 79, 'rhs' => 2 ),
1725 : array( 'lhs' => 79, 'rhs' => 0 ),
1726 : array( 'lhs' => 101, 'rhs' => 2 ),
1727 : array( 'lhs' => 101, 'rhs' => 2 ),
1728 : array( 'lhs' => 80, 'rhs' => 1 ),
1729 : array( 'lhs' => 80, 'rhs' => 2 ),
1730 : array( 'lhs' => 80, 'rhs' => 3 ),
1731 : array( 'lhs' => 102, 'rhs' => 1 ),
1732 : array( 'lhs' => 102, 'rhs' => 3 ),
1733 : array( 'lhs' => 102, 'rhs' => 3 ),
1734 : array( 'lhs' => 102, 'rhs' => 3 ),
1735 : array( 'lhs' => 102, 'rhs' => 3 ),
1736 : array( 'lhs' => 102, 'rhs' => 3 ),
1737 : array( 'lhs' => 102, 'rhs' => 3 ),
1738 : array( 'lhs' => 102, 'rhs' => 2 ),
1739 : array( 'lhs' => 102, 'rhs' => 2 ),
1740 : array( 'lhs' => 102, 'rhs' => 3 ),
1741 : array( 'lhs' => 102, 'rhs' => 3 ),
1742 : array( 'lhs' => 102, 'rhs' => 2 ),
1743 : array( 'lhs' => 102, 'rhs' => 2 ),
1744 : array( 'lhs' => 102, 'rhs' => 3 ),
1745 : array( 'lhs' => 102, 'rhs' => 3 ),
1746 : array( 'lhs' => 103, 'rhs' => 1 ),
1747 : array( 'lhs' => 103, 'rhs' => 1 ),
1748 : array( 'lhs' => 103, 'rhs' => 1 ),
1749 : array( 'lhs' => 103, 'rhs' => 1 ),
1750 : array( 'lhs' => 103, 'rhs' => 1 ),
1751 : array( 'lhs' => 103, 'rhs' => 1 ),
1752 : array( 'lhs' => 103, 'rhs' => 1 ),
1753 : array( 'lhs' => 103, 'rhs' => 1 ),
1754 : array( 'lhs' => 104, 'rhs' => 1 ),
1755 : array( 'lhs' => 104, 'rhs' => 1 ),
1756 : array( 'lhs' => 104, 'rhs' => 1 ),
1757 : array( 'lhs' => 86, 'rhs' => 3 ),
1758 : array( 'lhs' => 105, 'rhs' => 1 ),
1759 : array( 'lhs' => 105, 'rhs' => 3 ),
1760 : array( 'lhs' => 105, 'rhs' => 0 ),
1761 : array( 'lhs' => 106, 'rhs' => 3 ),
1762 : array( 'lhs' => 106, 'rhs' => 3 ),
1763 : array( 'lhs' => 106, 'rhs' => 1 ),
1764 : array( 'lhs' => 92, 'rhs' => 2 ),
1765 : array( 'lhs' => 92, 'rhs' => 1 ),
1766 : array( 'lhs' => 107, 'rhs' => 3 ),
1767 : array( 'lhs' => 107, 'rhs' => 3 ),
1768 : array( 'lhs' => 107, 'rhs' => 2 ),
1769 : array( 'lhs' => 107, 'rhs' => 3 ),
1770 : array( 'lhs' => 107, 'rhs' => 1 ),
1771 : array( 'lhs' => 107, 'rhs' => 2 ),
1772 : array( 'lhs' => 107, 'rhs' => 2 ),
1773 : array( 'lhs' => 107, 'rhs' => 2 ),
1774 : array( 'lhs' => 107, 'rhs' => 1 ),
1775 : array( 'lhs' => 74, 'rhs' => 2 ),
1776 : array( 'lhs' => 74, 'rhs' => 1 ),
1777 : array( 'lhs' => 108, 'rhs' => 1 ),
1778 : array( 'lhs' => 108, 'rhs' => 1 ),
1779 : );
1780 :
1781 : /**
1782 : * The following table contains a mapping of reduce action to method name
1783 : * that handles the reduction.
1784 : *
1785 : * If a rule is not set, it has no handler.
1786 : */
1787 : static public $yyReduceMap = array(
1788 : 0 => 0,
1789 : 39 => 0,
1790 : 46 => 0,
1791 : 47 => 0,
1792 : 49 => 0,
1793 : 50 => 0,
1794 : 51 => 0,
1795 : 67 => 0,
1796 : 134 => 0,
1797 : 1 => 1,
1798 : 36 => 1,
1799 : 43 => 1,
1800 : 44 => 1,
1801 : 45 => 1,
1802 : 81 => 1,
1803 : 104 => 1,
1804 : 141 => 1,
1805 : 150 => 1,
1806 : 152 => 1,
1807 : 153 => 1,
1808 : 154 => 1,
1809 : 2 => 2,
1810 : 71 => 2,
1811 : 140 => 2,
1812 : 148 => 2,
1813 : 151 => 2,
1814 : 3 => 3,
1815 : 4 => 4,
1816 : 5 => 5,
1817 : 6 => 6,
1818 : 7 => 7,
1819 : 8 => 8,
1820 : 9 => 9,
1821 : 10 => 10,
1822 : 11 => 11,
1823 : 12 => 12,
1824 : 13 => 13,
1825 : 14 => 14,
1826 : 15 => 15,
1827 : 16 => 16,
1828 : 17 => 17,
1829 : 18 => 18,
1830 : 19 => 19,
1831 : 20 => 20,
1832 : 21 => 21,
1833 : 22 => 22,
1834 : 23 => 23,
1835 : 24 => 24,
1836 : 28 => 24,
1837 : 96 => 24,
1838 : 139 => 24,
1839 : 25 => 25,
1840 : 26 => 26,
1841 : 27 => 27,
1842 : 29 => 29,
1843 : 30 => 30,
1844 : 31 => 31,
1845 : 32 => 32,
1846 : 33 => 33,
1847 : 34 => 34,
1848 : 35 => 35,
1849 : 37 => 37,
1850 : 38 => 38,
1851 : 40 => 40,
1852 : 41 => 41,
1853 : 42 => 42,
1854 : 48 => 48,
1855 : 52 => 52,
1856 : 53 => 53,
1857 : 54 => 54,
1858 : 56 => 54,
1859 : 55 => 55,
1860 : 57 => 57,
1861 : 58 => 58,
1862 : 59 => 59,
1863 : 60 => 60,
1864 : 61 => 61,
1865 : 62 => 62,
1866 : 63 => 63,
1867 : 64 => 64,
1868 : 65 => 65,
1869 : 66 => 66,
1870 : 68 => 68,
1871 : 69 => 69,
1872 : 70 => 70,
1873 : 72 => 72,
1874 : 101 => 72,
1875 : 73 => 73,
1876 : 74 => 74,
1877 : 75 => 75,
1878 : 76 => 76,
1879 : 79 => 76,
1880 : 77 => 77,
1881 : 78 => 78,
1882 : 80 => 80,
1883 : 82 => 82,
1884 : 83 => 83,
1885 : 84 => 84,
1886 : 106 => 84,
1887 : 85 => 85,
1888 : 86 => 86,
1889 : 87 => 87,
1890 : 88 => 88,
1891 : 89 => 89,
1892 : 90 => 90,
1893 : 91 => 91,
1894 : 92 => 92,
1895 : 93 => 93,
1896 : 94 => 94,
1897 : 95 => 95,
1898 : 97 => 97,
1899 : 98 => 98,
1900 : 99 => 99,
1901 : 100 => 100,
1902 : 102 => 102,
1903 : 103 => 103,
1904 : 105 => 105,
1905 : 107 => 107,
1906 : 108 => 108,
1907 : 111 => 108,
1908 : 109 => 109,
1909 : 110 => 110,
1910 : 112 => 112,
1911 : 113 => 113,
1912 : 114 => 114,
1913 : 119 => 114,
1914 : 115 => 115,
1915 : 118 => 115,
1916 : 116 => 116,
1917 : 121 => 116,
1918 : 117 => 117,
1919 : 120 => 117,
1920 : 122 => 122,
1921 : 123 => 123,
1922 : 124 => 124,
1923 : 125 => 125,
1924 : 126 => 126,
1925 : 127 => 127,
1926 : 128 => 128,
1927 : 129 => 129,
1928 : 130 => 130,
1929 : 131 => 131,
1930 : 132 => 132,
1931 : 133 => 133,
1932 : 135 => 135,
1933 : 136 => 136,
1934 : 137 => 137,
1935 : 138 => 138,
1936 : 142 => 142,
1937 : 143 => 143,
1938 : 144 => 144,
1939 : 145 => 145,
1940 : 146 => 146,
1941 : 147 => 147,
1942 : 149 => 149,
1943 : );
1944 : /* Beginning here are the reduction cases. A typical example
1945 : ** follows:
1946 : ** #line <lineno> <grammarfile>
1947 : ** function yy_r0($yymsp){ ... } // User supplied code
1948 : ** #line <lineno> <thisfile>
1949 : */
1950 : #line 79 "internal.templateparser.y"
1951 337 : function yy_r0(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
1952 : #line 1957 "internal.templateparser.php"
1953 : #line 85 "internal.templateparser.y"
1954 338 : function yy_r1(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
1955 : #line 1960 "internal.templateparser.php"
1956 : #line 87 "internal.templateparser.y"
1957 309 : function yy_r2(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
1958 : #line 1963 "internal.templateparser.php"
1959 : #line 93 "internal.templateparser.y"
1960 309 : function yy_r3(){if ($this->compiler->has_code) {
1961 309 : $tmp =''; foreach ($this->prefix_code as $code) {$tmp.=$code;} $this->prefix_code=array();
1962 309 : $this->_retvalue = $this->cacher->processNocacheCode($tmp.$this->yystack[$this->yyidx + 0]->minor, $this->compiler,$this->nocache,true);
1963 309 : } else { $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor;} $this->nocache=false; }
1964 : #line 1969 "internal.templateparser.php"
1965 : #line 98 "internal.templateparser.y"
1966 8 : function yy_r4(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -2]->minor,$s); $this->_retvalue = $s[0]; }
1967 : #line 1972 "internal.templateparser.php"
1968 : #line 101 "internal.templateparser.y"
1969 1 : function yy_r5(){preg_match('/\s*/',$this->yystack[$this->yyidx + -2]->minor,$s); preg_match('/\s*/',$this->yystack[$this->yyidx + 0]->minor,$s2); $this->_retvalue = $s[0].$this->cacher->processNocacheCode($this->yystack[$this->yyidx + -1]->minor.$s2[0], $this->compiler,false,false); }
1970 : #line 1975 "internal.templateparser.php"
1971 : #line 103 "internal.templateparser.y"
1972 0 : function yy_r6(){preg_match('/\s*/',$this->yystack[$this->yyidx + 0]->minor,$s); $this->_retvalue = $s[0].$this->cacher->processNocacheCode($this->smarty->left_delimiter, $this->compiler,false,false); }
1973 : #line 1978 "internal.templateparser.php"
1974 : #line 105 "internal.templateparser.y"
1975 0 : function yy_r7(){preg_match('/\s*/',$this->yystack[$this->yyidx + 0]->minor,$s); $this->_retvalue = $s[0].$this->cacher->processNocacheCode($this->smarty->right_delimiter, $this->compiler,false,false); }
1976 : #line 1981 "internal.templateparser.php"
1977 : #line 107 "internal.templateparser.y"
1978 4 : function yy_r8(){if ($this->sec_obj->php_handling == SMARTY_PHP_PASSTHRU) {
1979 1 : $this->_retvalue = $this->cacher->processNocacheCode("<?php echo '<?php".str_replace("'","\'",$this->yystack[$this->yyidx + -1]->minor)."?>';?>\n", $this->compiler, false, false);
1980 4 : } elseif ($this->sec_obj->php_handling == SMARTY_PHP_QUOTE) {
1981 1 : $this->_retvalue = $this->cacher->processNocacheCode(htmlspecialchars('<?php'.$this->yystack[$this->yyidx + -1]->minor.'?>', ENT_QUOTES), $this->compiler, false, false);
1982 3 : }elseif ($this->sec_obj->php_handling == SMARTY_PHP_ALLOW) {
1983 2 : $this->_retvalue = $this->cacher->processNocacheCode('<?php'.$this->yystack[$this->yyidx + -1]->minor.'?>', $this->compiler, false,true);
1984 2 : }elseif ($this->sec_obj->php_handling == SMARTY_PHP_REMOVE) {
1985 0 : $this->_retvalue = '';
1986 0 : }
1987 4 : }
1988 : #line 1993 "internal.templateparser.php"
1989 : #line 118 "internal.templateparser.y"
1990 1 : function yy_r9(){preg_match('/\s*/',$this->yystack[$this->yyidx + -3]->minor,$s); $this->_retvalue = $s[0];
1991 1 : if ($this->sec_obj->php_handling == SMARTY_PHP_PASSTHRU || $this->sec_obj->php_handling == SMARTY_PHP_ALLOW) {
1992 1 : $this->_retvalue .= $this->cacher->processNocacheCode("<?php echo '<?=$".$this->yystack[$this->yyidx + -1]->minor."?>'?>\n", $this->compiler, false, false);
1993 1 : } elseif ($this->sec_obj->php_handling == SMARTY_PHP_QUOTE) {
1994 0 : $this->_retvalue .= $this->cacher->processNocacheCode(htmlspecialchars('<?=$'.$this->yystack[$this->yyidx + -1]->minor.'?>', ENT_QUOTES), $this->compiler, false, false);
1995 0 : }elseif ($this->sec_obj == SMARTY_PHP_REMOVE) {
1996 0 : $this->_retvalue .= '';
1997 0 : }
1998 1 : }
1999 : #line 2004 "internal.templateparser.php"
2000 : #line 129 "internal.templateparser.y"
2001 3 : function yy_r10(){preg_match('/\s*/',$this->yystack[$this->yyidx + 0]->minor,$s); $this->_retvalue = $s[0].$this->cacher->processNocacheCode("<?php echo '<?xml';?>", $this->compiler, true, true); }
2002 : #line 2007 "internal.templateparser.php"
2003 : #line 130 "internal.templateparser.y"
2004 3 : function yy_r11(){$this->_retvalue = $this->cacher->processNocacheCode("<?php echo '?>';?>\n", $this->compiler, true, true); }
2005 : #line 2010 "internal.templateparser.php"
2006 : #line 132 "internal.templateparser.y"
2007 176 : function yy_r12(){$this->_retvalue = $this->cacher->processNocacheCode($this->yystack[$this->yyidx + 0]->minor, $this->compiler,false,false); }
2008 : #line 2013 "internal.templateparser.php"
2009 : #line 139 "internal.templateparser.y"
2010 47 : function yy_r13(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -5]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag('assign',array_merge(array('value'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor)); }
2011 : #line 2016 "internal.templateparser.php"
2012 : #line 141 "internal.templateparser.y"
2013 192 : function yy_r14(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -3]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag('print_expression',array_merge(array('value'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)); }
2014 : #line 2019 "internal.templateparser.php"
2015 : #line 143 "internal.templateparser.y"
2016 199 : function yy_r15(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -3]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor,$this->yystack[$this->yyidx + -1]->minor); }
2017 : #line 2022 "internal.templateparser.php"
2018 : #line 145 "internal.templateparser.y"
2019 2 : function yy_r16(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -5]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,array_merge(array('object_methode'=>$this->yystack[$this->yyidx + -2]->minor),$this->yystack[$this->yyidx + -1]->minor)); }
2020 : #line 2025 "internal.templateparser.php"
2021 : #line 147 "internal.templateparser.y"
2022 1 : function yy_r17(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -5]->minor,$s); $this->_retvalue = $s[0].'<?php ob_start();?>'.$this->compiler->compileTag($this->yystack[$this->yyidx + -4]->minor,$this->yystack[$this->yyidx + -1]->minor).'<?php echo ';
2023 1 : if ($this->smarty->plugin_handler->loadSmartyPlugin($this->yystack[$this->yyidx + -3]->minor[0],'modifier')) {
2024 1 : $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -3]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -2]->minor. "),".$this->yystack[$this->yyidx + -3]->minor[1].");?>";
2025 1 : } else {
2026 0 : if (is_callable($this->yystack[$this->yyidx + -3]->minor[0])) {
2027 0 : if (!$this->template->security || $this->smarty->security_handler->isTrustedModifier($this->yystack[$this->yyidx + -3]->minor[0], $this->compiler)) {
2028 0 : $this->_retvalue .= "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -3]->minor[0] . "',array(ob_get_clean()" . $this->yystack[$this->yyidx + -2]->minor. "),".$this->yystack[$this->yyidx + -3]->minor[1].");?>";
2029 0 : }
2030 0 : } else {
2031 0 : $this->compiler->trigger_template_error ("unknown modifier \"" . $this->yystack[$this->yyidx + -3]->minor[0] . "\"");
2032 : }
2033 : }
2034 1 : }
2035 : #line 2040 "internal.templateparser.php"
2036 : #line 161 "internal.templateparser.y"
2037 153 : function yy_r18(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -3]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -2]->minor.'close',$this->yystack[$this->yyidx + -1]->minor); }
2038 : #line 2043 "internal.templateparser.php"
2039 : #line 163 "internal.templateparser.y"
2040 1 : function yy_r19(){ preg_match('/\s*/',$this->yystack[$this->yyidx + -4]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor.'close',array('object_methode'=>$this->yystack[$this->yyidx + -1]->minor)); }
2041 : #line 2046 "internal.templateparser.php"
2042 : #line 165 "internal.templateparser.y"
2043 77 : function yy_r20(){if (!in_array($this->yystack[$this->yyidx + -3]->minor,array('if','elseif','while'))) {
2044 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -3]->minor . "\"");
2045 0 : }
2046 77 : preg_match('/\s*/',$this->yystack[$this->yyidx + -4]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,array('if condition'=>$this->yystack[$this->yyidx + -1]->minor)); }
2047 : #line 2052 "internal.templateparser.php"
2048 : #line 169 "internal.templateparser.y"
2049 3 : function yy_r21(){ if (!in_array($this->yystack[$this->yyidx + -3]->minor,array('if','elseif','while'))) {
2050 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -3]->minor . "\"");
2051 0 : }
2052 3 : preg_match('/\s*/',$this->yystack[$this->yyidx + -4]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -3]->minor,array('if condition'=>$this->yystack[$this->yyidx + -1]->minor)); }
2053 : #line 2058 "internal.templateparser.php"
2054 : #line 174 "internal.templateparser.y"
2055 : function yy_r22(){
2056 7 : if ($this->yystack[$this->yyidx + -9]->minor != 'for') {
2057 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -9]->minor . "\"");
2058 0 : }
2059 7 : preg_match('/\s*/',$this->yystack[$this->yyidx + -10]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -9]->minor,array('start'=>$this->yystack[$this->yyidx + -7]->minor,'ifexp'=>$this->yystack[$this->yyidx + -5]->minor,'varloop'=>$this->yystack[$this->yyidx + -2]->minor,'loop'=>$this->yystack[$this->yyidx + -1]->minor)); }
2060 : #line 2065 "internal.templateparser.php"
2061 : #line 179 "internal.templateparser.y"
2062 1 : function yy_r23(){ $this->_retvalue = '='.$this->yystack[$this->yyidx + 0]->minor; }
2063 : #line 2068 "internal.templateparser.php"
2064 : #line 180 "internal.templateparser.y"
2065 130 : function yy_r24(){ $this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
2066 : #line 2071 "internal.templateparser.php"
2067 : #line 182 "internal.templateparser.y"
2068 : function yy_r25(){
2069 16 : if ($this->yystack[$this->yyidx + -6]->minor != 'foreach') {
2070 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -6]->minor . "\"");
2071 0 : }
2072 16 : preg_match('/\s*/',$this->yystack[$this->yyidx + -7]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array('from'=>$this->yystack[$this->yyidx + -4]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor)); }
2073 : #line 2078 "internal.templateparser.php"
2074 : #line 187 "internal.templateparser.y"
2075 : function yy_r26(){
2076 1 : if ($this->yystack[$this->yyidx + -6]->minor != 'foreach') {
2077 0 : $this->compiler->trigger_template_error ("wrong syntax for tag \"" . $this->yystack[$this->yyidx + -6]->minor . "\"");
2078 0 : }
2079 1 : preg_match('/\s*/',$this->yystack[$this->yyidx + -7]->minor,$s); $this->_retvalue = $s[0].$this->compiler->compileTag($this->yystack[$this->yyidx + -6]->minor,array('from'=>$this->yystack[$this->yyidx + -4]->minor,'item'=>$this->yystack[$this->yyidx + -1]->minor)); }
2080 : #line 2085 "internal.templateparser.php"
2081 : #line 197 "internal.templateparser.y"
2082 70 : function yy_r27(){ $this->_retvalue = array_merge($this->yystack[$this->yyidx + -1]->minor,$this->yystack[$this->yyidx + 0]->minor); }
2083 : #line 2088 "internal.templateparser.php"
2084 : #line 201 "internal.templateparser.y"
2085 286 : function yy_r29(){ $this->_retvalue = array(); }
2086 : #line 2091 "internal.templateparser.php"
2087 : #line 204 "internal.templateparser.y"
2088 111 : function yy_r30(){ $this->_retvalue = array($this->yystack[$this->yyidx + -2]->minor=>$this->yystack[$this->yyidx + 0]->minor); }
2089 : #line 2094 "internal.templateparser.php"
2090 : #line 205 "internal.templateparser.y"
2091 0 : function yy_r31(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor=>'true'); }
2092 : #line 2097 "internal.templateparser.php"
2093 : #line 210 "internal.templateparser.y"
2094 7 : function yy_r32(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor); }
2095 : #line 2100 "internal.templateparser.php"
2096 : #line 211 "internal.templateparser.y"
2097 1 : function yy_r33(){ $this->yystack[$this->yyidx + -2]->minor[]=$this->yystack[$this->yyidx + 0]->minor; $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor; }
2098 : #line 2103 "internal.templateparser.php"
2099 : #line 213 "internal.templateparser.y"
2100 10 : function yy_r34(){ $this->_retvalue = array('var' => $this->yystack[$this->yyidx + -2]->minor, 'value'=>$this->yystack[$this->yyidx + 0]->minor); }
2101 : #line 2106 "internal.templateparser.php"
2102 : #line 219 "internal.templateparser.y"
2103 74 : function yy_r35(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
2104 : #line 2109 "internal.templateparser.php"
2105 : #line 223 "internal.templateparser.y"
2106 1 : function yy_r37(){$this->_retvalue = '$_smarty_tpl->getStreamVariable(\''. $this->yystack[$this->yyidx + -2]->minor .'://'. $this->yystack[$this->yyidx + 0]->minor . '\')'; }
2107 : #line 2112 "internal.templateparser.php"
2108 : #line 224 "internal.templateparser.y"
2109 : function yy_r38(){
2110 15 : if ($this->smarty->plugin_handler->loadSmartyPlugin($this->yystack[$this->yyidx + -1]->minor[0],'modifier')) {
2111 7 : $this->_retvalue = "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -1]->minor[0] . "',array(". $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + 0]->minor. "),".$this->yystack[$this->yyidx + -1]->minor[1].")";
2112 7 : } else {
2113 9 : if (is_callable($this->yystack[$this->yyidx + -1]->minor[0])) {
2114 8 : if (!$this->template->security || $this->smarty->security_handler->isTrustedModifier($this->yystack[$this->yyidx + -1]->minor[0], $this->compiler)) {
2115 7 : $this->_retvalue = "\$_smarty_tpl->smarty->plugin_handler->executeModifier('".$this->yystack[$this->yyidx + -1]->minor[0] . "',array(". $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + 0]->minor. "),".$this->yystack[$this->yyidx + -1]->minor[1].")";
2116 7 : }
2117 7 : } else {
2118 1 : $this->compiler->trigger_template_error ("unknown modifier \"" . $this->yystack[$this->yyidx + -1]->minor[0] . "\"");
2119 : }
2120 : }
2121 13 : }
2122 : #line 2127 "internal.templateparser.php"
2123 : #line 241 "internal.templateparser.y"
2124 1 : function yy_r40(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2125 : #line 2130 "internal.templateparser.php"
2126 : #line 243 "internal.templateparser.y"
2127 12 : function yy_r41(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor . $this->yystack[$this->yyidx + -1]->minor . $this->yystack[$this->yyidx + 0]->minor; }
2128 : #line 2133 "internal.templateparser.php"
2129 : #line 245 "internal.templateparser.y"
2130 0 : function yy_r42(){ $this->_retvalue = '('. $this->yystack[$this->yyidx + -2]->minor . ').(' . $this->yystack[$this->yyidx + 0]->minor. ')'; }
2131 : #line 2136 "internal.templateparser.php"
2132 : #line 265 "internal.templateparser.y"
2133 0 : function yy_r48(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; }
2134 : #line 2139 "internal.templateparser.php"
2135 : #line 273 "internal.templateparser.y"
2136 1 : function yy_r52(){ $this->_retvalue = "(". $this->yystack[$this->yyidx + -1]->minor .")"; }
2137 : #line 2142 "internal.templateparser.php"
2138 : #line 275 "internal.templateparser.y"
2139 68 : function yy_r53(){ $this->_retvalue = "'".$this->yystack[$this->yyidx + -1]->minor."'"; }
2140 : #line 2145 "internal.templateparser.php"
2141 : #line 276 "internal.templateparser.y"
2142 2 : function yy_r54(){ $this->_retvalue = "''"; }
2143 : #line 2148 "internal.templateparser.php"
2144 : #line 278 "internal.templateparser.y"
2145 44 : function yy_r55(){ $this->_retvalue = '"'.$this->yystack[$this->yyidx + -1]->minor.'"'; }
2146 : #line 2151 "internal.templateparser.php"
2147 : #line 281 "internal.templateparser.y"
2148 1 : function yy_r57(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor; }
2149 : #line 2154 "internal.templateparser.php"
2150 : #line 282 "internal.templateparser.y"
2151 2 : function yy_r58(){ $this->prefix_number++; $this->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -3]->minor .'\')->value;?>'; $this->_retvalue = $this->yystack[$this->yyidx + -6]->minor.'::$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -1]->minor .')'; }
2152 : #line 2157 "internal.templateparser.php"
2153 : #line 284 "internal.templateparser.y"
2154 0 : function yy_r59(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor.'::'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2155 : #line 2160 "internal.templateparser.php"
2156 : #line 285 "internal.templateparser.y"
2157 0 : function yy_r60(){ $this->prefix_number++; $this->prefix_code[] = '<?php $_tmp'.$this->prefix_number.'=$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + -4]->minor .'\')->value;?>'; $this->_retvalue = $this->yystack[$this->yyidx + -7]->minor.'::$_tmp'.$this->prefix_number.'('. $this->yystack[$this->yyidx + -2]->minor .')'.$this->yystack[$this->yyidx + 0]->minor; }
2158 : #line 2163 "internal.templateparser.php"
2159 : #line 287 "internal.templateparser.y"
2160 1 : function yy_r61(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'::'.$this->yystack[$this->yyidx + 0]->minor; }
2161 : #line 2166 "internal.templateparser.php"
2162 : #line 289 "internal.templateparser.y"
2163 1 : function yy_r62(){ $this->_retvalue = $this->yystack[$this->yyidx + -4]->minor.'::$'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2164 : #line 2169 "internal.templateparser.php"
2165 : #line 291 "internal.templateparser.y"
2166 0 : function yy_r63(){ $this->_retvalue = $this->yystack[$this->yyidx + -5]->minor.'::$'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2167 : #line 2172 "internal.templateparser.php"
2168 : #line 293 "internal.templateparser.y"
2169 0 : function yy_r64(){ $this->prefix_number++; $this->prefix_code[] = '<?php ob_start();?>'.$this->yystack[$this->yyidx + 0]->minor.'<?php $_tmp'.$this->prefix_number.'=ob_get_clean();?>'; $this->_retvalue = '$_tmp'.$this->prefix_number; }
2170 : #line 2175 "internal.templateparser.php"
2171 : #line 299 "internal.templateparser.y"
2172 173 : function yy_r65(){if ($this->yystack[$this->yyidx + 0]->minor['var'] == '\'smarty\'') { $this->_retvalue = $this->compiler->compileTag('internal_smarty_var',$this->yystack[$this->yyidx + 0]->minor['index']);} else {
2173 173 : $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + 0]->minor['var'] .')->value'.$this->yystack[$this->yyidx + 0]->minor['index']; $this->nocache=$this->template->getVariable(trim($this->yystack[$this->yyidx + 0]->minor['var'],"'"))->nocache;} }
2174 : #line 2179 "internal.templateparser.php"
2175 : #line 302 "internal.templateparser.y"
2176 10 : function yy_r66(){ $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -2]->minor .')->'.$this->yystack[$this->yyidx + 0]->minor; $this->nocache=$this->template->getVariable(trim($this->yystack[$this->yyidx + -2]->minor,"'"))->nocache; }
2177 : #line 2182 "internal.templateparser.php"
2178 : #line 306 "internal.templateparser.y"
2179 12 : function yy_r68(){$this->_retvalue = '$_smarty_tpl->getConfigVariable(\''. $this->yystack[$this->yyidx + -1]->minor .'\')'; }
2180 : #line 2185 "internal.templateparser.php"
2181 : #line 307 "internal.templateparser.y"
2182 0 : function yy_r69(){$this->_retvalue = '$_smarty_tpl->getConfigVariable('. $this->yystack[$this->yyidx + -1]->minor .')'; }
2183 : #line 2188 "internal.templateparser.php"
2184 : #line 310 "internal.templateparser.y"
2185 174 : function yy_r70(){$this->_retvalue = array('var'=>$this->yystack[$this->yyidx + -1]->minor, 'index'=>$this->yystack[$this->yyidx + 0]->minor); }
2186 : #line 2191 "internal.templateparser.php"
2187 : #line 318 "internal.templateparser.y"
2188 181 : function yy_r72(){return; }
2189 : #line 2194 "internal.templateparser.php"
2190 : #line 322 "internal.templateparser.y"
2191 10 : function yy_r73(){ $this->_retvalue = "['". $this->yystack[$this->yyidx + 0]->minor ."']"; }
2192 : #line 2197 "internal.templateparser.php"
2193 : #line 323 "internal.templateparser.y"
2194 1 : function yy_r74(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + 0]->minor ."]"; }
2195 : #line 2200 "internal.templateparser.php"
2196 : #line 324 "internal.templateparser.y"
2197 0 : function yy_r75(){ $this->_retvalue = "[".$this->yystack[$this->yyidx + 0]->minor."]"; }
2198 : #line 2203 "internal.templateparser.php"
2199 : #line 325 "internal.templateparser.y"
2200 13 : function yy_r76(){ $this->_retvalue = "[". $this->yystack[$this->yyidx + -1]->minor ."]"; }
2201 : #line 2206 "internal.templateparser.php"
2202 : #line 327 "internal.templateparser.y"
2203 5 : function yy_r77(){ $this->_retvalue = '['.$this->compiler->compileTag('internal_smarty_var','[\'section\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\'][\'index\']').']'; }
2204 : #line 2209 "internal.templateparser.php"
2205 : #line 328 "internal.templateparser.y"
2206 0 : function yy_r78(){ $this->_retvalue = '['.$this->compiler->compileTag('internal_smarty_var','[\'section\'][\''.$this->yystack[$this->yyidx + -3]->minor.'\'][\''.$this->yystack[$this->yyidx + -1]->minor.'\']').']'; }
2207 : #line 2212 "internal.templateparser.php"
2208 : #line 332 "internal.templateparser.y"
2209 3 : function yy_r80(){$this->_retvalue = ''; }
2210 : #line 2215 "internal.templateparser.php"
2211 : #line 340 "internal.templateparser.y"
2212 3 : function yy_r82(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.'.'.$this->yystack[$this->yyidx + 0]->minor; }
2213 : #line 2218 "internal.templateparser.php"
2214 : #line 342 "internal.templateparser.y"
2215 176 : function yy_r83(){$this->_retvalue = '\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
2216 : #line 2221 "internal.templateparser.php"
2217 : #line 344 "internal.templateparser.y"
2218 8 : function yy_r84(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -1]->minor.')'; }
2219 : #line 2224 "internal.templateparser.php"
2220 : #line 349 "internal.templateparser.y"
2221 0 : function yy_r85(){ if ($this->yystack[$this->yyidx + -1]->minor['var'] == '\'smarty\'') { $this->_retvalue = $this->compiler->compileTag('internal_smarty_var',$this->yystack[$this->yyidx + -1]->minor['index']).$this->yystack[$this->yyidx + 0]->minor;} else {
2222 0 : $this->_retvalue = '$_smarty_tpl->getVariable('. $this->yystack[$this->yyidx + -1]->minor['var'] .')->value'.$this->yystack[$this->yyidx + -1]->minor['index'].$this->yystack[$this->yyidx + 0]->minor; $this->nocache=$this->template->getVariable(trim($this->yystack[$this->yyidx + -1]->minor['var'],"'"))->nocache;} }
2223 : #line 2228 "internal.templateparser.php"
2224 : #line 352 "internal.templateparser.y"
2225 0 : function yy_r86(){$this->_retvalue = $this->yystack[$this->yyidx + 0]->minor; }
2226 : #line 2231 "internal.templateparser.php"
2227 : #line 354 "internal.templateparser.y"
2228 0 : function yy_r87(){$this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2229 : #line 2234 "internal.templateparser.php"
2230 : #line 356 "internal.templateparser.y"
2231 0 : function yy_r88(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2232 : #line 2237 "internal.templateparser.php"
2233 : #line 357 "internal.templateparser.y"
2234 0 : function yy_r89(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
2235 : #line 2240 "internal.templateparser.php"
2236 : #line 358 "internal.templateparser.y"
2237 0 : function yy_r90(){ $this->_retvalue = '->{'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
2238 : #line 2243 "internal.templateparser.php"
2239 : #line 359 "internal.templateparser.y"
2240 0 : function yy_r91(){ $this->_retvalue = '->{\''.$this->yystack[$this->yyidx + -4]->minor.'\'.'.$this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + 0]->minor.'}'; }
2241 : #line 2246 "internal.templateparser.php"
2242 : #line 361 "internal.templateparser.y"
2243 0 : function yy_r92(){ $this->_retvalue = '->'.$this->yystack[$this->yyidx + 0]->minor; }
2244 : #line 2249 "internal.templateparser.php"
2245 : #line 367 "internal.templateparser.y"
2246 10 : function yy_r93(){if (!$this->template->security || $this->smarty->security_handler->isTrustedPhpFunction($this->yystack[$this->yyidx + -3]->minor, $this->compiler)) {
2247 8 : if ($this->yystack[$this->yyidx + -3]->minor == 'isset' || $this->yystack[$this->yyidx + -3]->minor == 'empty' || $this->yystack[$this->yyidx + -3]->minor == 'array' || is_callable($this->yystack[$this->yyidx + -3]->minor)) {
2248 8 : $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $this->yystack[$this->yyidx + -1]->minor .")";
2249 8 : } else {
2250 0 : $this->compiler->trigger_template_error ("unknown function \"" . $this->yystack[$this->yyidx + -3]->minor . "\"");
2251 : }
2252 8 : } }
2253 : #line 2258 "internal.templateparser.php"
2254 : #line 378 "internal.templateparser.y"
2255 1 : function yy_r94(){ $this->_retvalue = $this->yystack[$this->yyidx + -3]->minor . "(". $this->yystack[$this->yyidx + -1]->minor .")"; }
2256 : #line 2261 "internal.templateparser.php"
2257 : #line 382 "internal.templateparser.y"
2258 0 : function yy_r95(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.",".$this->yystack[$this->yyidx + 0]->minor; }
2259 : #line 2264 "internal.templateparser.php"
2260 : #line 386 "internal.templateparser.y"
2261 1 : function yy_r97(){ return; }
2262 : #line 2267 "internal.templateparser.php"
2263 : #line 391 "internal.templateparser.y"
2264 3 : function yy_r98(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor,'false'); }
2265 : #line 2270 "internal.templateparser.php"
2266 : #line 392 "internal.templateparser.y"
2267 13 : function yy_r99(){ $this->_retvalue = array($this->yystack[$this->yyidx + 0]->minor,'true'); }
2268 : #line 2273 "internal.templateparser.php"
2269 : #line 399 "internal.templateparser.y"
2270 8 : function yy_r100(){ $this->_retvalue = $this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2271 : #line 2276 "internal.templateparser.php"
2272 : #line 403 "internal.templateparser.y"
2273 7 : function yy_r102(){$this->_retvalue = ','.$this->yystack[$this->yyidx + 0]->minor; }
2274 : #line 2279 "internal.templateparser.php"
2275 : #line 404 "internal.templateparser.y"
2276 1 : function yy_r103(){$this->_retvalue = ',\''.$this->yystack[$this->yyidx + 0]->minor.'\''; }
2277 : #line 2282 "internal.templateparser.php"
2278 : #line 411 "internal.templateparser.y"
2279 2 : function yy_r105(){$this->_retvalue = '!'.$this->yystack[$this->yyidx + 0]->minor; }
2280 : #line 2285 "internal.templateparser.php"
2281 : #line 416 "internal.templateparser.y"
2282 24 : function yy_r107(){$this->_retvalue =$this->yystack[$this->yyidx + 0]->minor; }
2283 : #line 2288 "internal.templateparser.php"
2284 : #line 417 "internal.templateparser.y"
2285 61 : function yy_r108(){$this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.$this->yystack[$this->yyidx + -1]->minor.$this->yystack[$this->yyidx + 0]->minor; }
2286 : #line 2291 "internal.templateparser.php"
2287 : #line 418 "internal.templateparser.y"
2288 0 : function yy_r109(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor.')'; }
2289 : #line 2294 "internal.templateparser.php"
2290 : #line 419 "internal.templateparser.y"
2291 0 : function yy_r110(){$this->_retvalue = 'in_array('.$this->yystack[$this->yyidx + -2]->minor.',(array)'.$this->yystack[$this->yyidx + 0]->minor.')'; }
2292 : #line 2297 "internal.templateparser.php"
2293 : #line 421 "internal.templateparser.y"
2294 1 : function yy_r112(){$this->_retvalue = '!('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; }
2295 : #line 2300 "internal.templateparser.php"
2296 : #line 422 "internal.templateparser.y"
2297 1 : function yy_r113(){$this->_retvalue = '('.$this->yystack[$this->yyidx + -2]->minor.' % '.$this->yystack[$this->yyidx + 0]->minor.')'; }
2298 : #line 2303 "internal.templateparser.php"
2299 : #line 423 "internal.templateparser.y"
2300 2 : function yy_r114(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; }
2301 : #line 2306 "internal.templateparser.php"
2302 : #line 424 "internal.templateparser.y"
2303 2 : function yy_r115(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -1]->minor.')'; }
2304 : #line 2309 "internal.templateparser.php"
2305 : #line 425 "internal.templateparser.y"
2306 1 : function yy_r116(){$this->_retvalue = '!(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; }
2307 : #line 2312 "internal.templateparser.php"
2308 : #line 426 "internal.templateparser.y"
2309 3 : function yy_r117(){$this->_retvalue = '(1 & '.$this->yystack[$this->yyidx + -2]->minor.' / '.$this->yystack[$this->yyidx + 0]->minor.')'; }
2310 : #line 2315 "internal.templateparser.php"
2311 : #line 432 "internal.templateparser.y"
2312 7 : function yy_r122(){$this->_retvalue = '=='; }
2313 : #line 2318 "internal.templateparser.php"
2314 : #line 433 "internal.templateparser.y"
2315 4 : function yy_r123(){$this->_retvalue = '!='; }
2316 : #line 2321 "internal.templateparser.php"
2317 : #line 434 "internal.templateparser.y"
2318 13 : function yy_r124(){$this->_retvalue = '>'; }
2319 : #line 2324 "internal.templateparser.php"
2320 : #line 435 "internal.templateparser.y"
2321 26 : function yy_r125(){$this->_retvalue = '<'; }
2322 : #line 2327 "internal.templateparser.php"
2323 : #line 436 "internal.templateparser.y"
2324 7 : function yy_r126(){$this->_retvalue = '>='; }
2325 : #line 2330 "internal.templateparser.php"
2326 : #line 437 "internal.templateparser.y"
2327 4 : function yy_r127(){$this->_retvalue = '<='; }
2328 : #line 2333 "internal.templateparser.php"
2329 : #line 438 "internal.templateparser.y"
2330 5 : function yy_r128(){$this->_retvalue = '==='; }
2331 : #line 2336 "internal.templateparser.php"
2332 : #line 439 "internal.templateparser.y"
2333 2 : function yy_r129(){$this->_retvalue = '!=='; }
2334 : #line 2339 "internal.templateparser.php"
2335 : #line 441 "internal.templateparser.y"
2336 5 : function yy_r130(){$this->_retvalue = '&&'; }
2337 : #line 2342 "internal.templateparser.php"
2338 : #line 442 "internal.templateparser.y"
2339 5 : function yy_r131(){$this->_retvalue = '||'; }
2340 : #line 2345 "internal.templateparser.php"
2341 : #line 443 "internal.templateparser.y"
2342 0 : function yy_r132(){$this->_retvalue = ' XOR '; }
2343 : #line 2348 "internal.templateparser.php"
2344 : #line 448 "internal.templateparser.y"
2345 32 : function yy_r133(){ $this->_retvalue = 'array('.$this->yystack[$this->yyidx + -1]->minor.')'; }
2346 : #line 2351 "internal.templateparser.php"
2347 : #line 450 "internal.templateparser.y"
2348 32 : function yy_r135(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.','.$this->yystack[$this->yyidx + 0]->minor; }
2349 : #line 2354 "internal.templateparser.php"
2350 : #line 451 "internal.templateparser.y"
2351 0 : function yy_r136(){ return; }
2352 : #line 2357 "internal.templateparser.php"
2353 : #line 452 "internal.templateparser.y"
2354 3 : function yy_r137(){ $this->_retvalue = $this->yystack[$this->yyidx + -2]->minor.'=>'.$this->yystack[$this->yyidx + 0]->minor; }
2355 : #line 2360 "internal.templateparser.php"
2356 : #line 453 "internal.templateparser.y"
2357 1 : function yy_r138(){ $this->_retvalue = '\''.$this->yystack[$this->yyidx + -2]->minor.'\'=>'.$this->yystack[$this->yyidx + 0]->minor; }
2358 : #line 2363 "internal.templateparser.php"
2359 : #line 461 "internal.templateparser.y"
2360 0 : function yy_r142(){$this->_retvalue = "`".$this->yystack[$this->yyidx + -1]->minor."`"; }
2361 : #line 2366 "internal.templateparser.php"
2362 : #line 462 "internal.templateparser.y"
2363 1 : function yy_r143(){$this->_retvalue = '".'.$this->yystack[$this->yyidx + -1]->minor.'."'; }
2364 : #line 2369 "internal.templateparser.php"
2365 : #line 463 "internal.templateparser.y"
2366 1 : function yy_r144(){$this->_retvalue = '".'.'$_smarty_tpl->getVariable(\''. $this->yystack[$this->yyidx + 0]->minor .'\')->value'.'."'; $this->nocache=$this->template->getVariable(trim($this->yystack[$this->yyidx + 0]->minor,"'"))->nocache; }
2367 : #line 2372 "internal.templateparser.php"
2368 : #line 464 "internal.templateparser.y"
2369 2 : function yy_r145(){preg_match('/\s*/',$this->yystack[$this->yyidx + -2]->minor,$s); $this->_retvalue = $s[0].'".('.$this->yystack[$this->yyidx + -1]->minor.')."'; }
2370 : #line 2375 "internal.templateparser.php"
2371 : #line 465 "internal.templateparser.y"
2372 0 : function yy_r146(){ $this->prefix_number++; $this->prefix_code[] = '<?php ob_start();?>'.$this->yystack[$this->yyidx + 0]->minor.'<?php $_tmp'.$this->prefix_number.'=ob_get_clean();?>'; $this->_retvalue = '".$_tmp'.$this->prefix_number.'."'; }
2373 : #line 2378 "internal.templateparser.php"
2374 : #line 466 "internal.templateparser.y"
2375 0 : function yy_r147(){$this->_retvalue = '$'.$this->yystack[$this->yyidx + 0]->minor; }
2376 : #line 2381 "internal.templateparser.php"
2377 : #line 468 "internal.templateparser.y"
2378 0 : function yy_r149(){$this->_retvalue = '`'.$this->yystack[$this->yyidx + 0]->minor; }
2379 : #line 2384 "internal.templateparser.php"
2380 :
2381 : /**
2382 : * placeholder for the left hand side in a reduce operation.
2383 : *
2384 : * For a parser with a rule like this:
2385 : * <pre>
2386 : * rule(A) ::= B. { A = 1; }
2387 : * </pre>
2388 : *
2389 : * The parser will translate to something like:
2390 : *
2391 : * <code>
2392 : * function yy_r0(){$this->_retvalue = 1;}
2393 : * </code>
2394 : */
2395 : private $_retvalue;
2396 :
2397 : /**
2398 : * Perform a reduce action and the shift that must immediately
2399 : * follow the reduce.
2400 : *
2401 : * For a rule such as:
2402 : *
2403 : * <pre>
2404 : * A ::= B blah C. { dosomething(); }
2405 : * </pre>
2406 : *
2407 : * This function will first call the action, if any, ("dosomething();" in our
2408 : * example), and then it will pop three states from the stack,
2409 : * one for each entry on the right-hand side of the expression
2410 : * (B, blah, and C in our example rule), and then push the result of the action
2411 : * back on to the stack with the resulting state reduced to (as described in the .out
2412 : * file)
2413 : * @param int Number of the rule by which to reduce
2414 : */
2415 : function yy_reduce($yyruleno)
2416 : {
2417 : //int $yygoto; /* The next state */
2418 : //int $yyact; /* The next action */
2419 : //mixed $yygotominor; /* The LHS of the rule reduced */
2420 : //TP_yyStackEntry $yymsp; /* The top of the parser's stack */
2421 : //int $yysize; /* Amount to pop the stack */
2422 342 : $yymsp = $this->yystack[$this->yyidx];
2423 342 : if (self::$yyTraceFILE && $yyruleno >= 0
2424 342 : && $yyruleno < count(self::$yyRuleName)) {
2425 0 : fprintf(self::$yyTraceFILE, "%sReduce (%d) [%s].\n",
2426 0 : self::$yyTracePrompt, $yyruleno,
2427 0 : self::$yyRuleName[$yyruleno]);
2428 0 : }
2429 :
2430 342 : $this->_retvalue = $yy_lefthand_side = null;
2431 342 : if (array_key_exists($yyruleno, self::$yyReduceMap)) {
2432 : // call the action
2433 342 : $this->_retvalue = null;
2434 342 : $this->{'yy_r' . self::$yyReduceMap[$yyruleno]}();
2435 342 : $yy_lefthand_side = $this->_retvalue;
2436 342 : }
2437 342 : $yygoto = self::$yyRuleInfo[$yyruleno]['lhs'];
2438 342 : $yysize = self::$yyRuleInfo[$yyruleno]['rhs'];
2439 342 : $this->yyidx -= $yysize;
2440 342 : for($i = $yysize; $i; $i--) {
2441 : // pop all of the right-hand side parameters
2442 338 : array_pop($this->yystack);
2443 338 : }
2444 342 : $yyact = $this->yy_find_reduce_action($this->yystack[$this->yyidx]->stateno, $yygoto);
2445 342 : if ($yyact < self::YYNSTATE) {
2446 : /* If we are not debugging and the reduce action popped at least
2447 : ** one element off the stack, then we can push the new element back
2448 : ** onto the stack here, and skip the stack overflow test in yy_shift().
2449 : ** That gives a significant speed improvement. */
2450 342 : if (!self::$yyTraceFILE && $yysize) {
2451 338 : $this->yyidx++;
2452 338 : $x = new TP_yyStackEntry;
2453 338 : $x->stateno = $yyact;
2454 338 : $x->major = $yygoto;
2455 338 : $x->minor = $yy_lefthand_side;
2456 338 : $this->yystack[$this->yyidx] = $x;
2457 338 : } else {
2458 291 : $this->yy_shift($yyact, $yygoto, $yy_lefthand_side);
2459 : }
2460 342 : } elseif ($yyact == self::YYNSTATE + self::YYNRULE + 1) {
2461 329 : $this->yy_accept();
2462 329 : }
2463 342 : }
2464 :
2465 : /**
2466 : * The following code executes when the parse fails
2467 : *
2468 : * Code from %parse_fail is inserted here
2469 : */
2470 : function yy_parse_failed()
2471 : {
2472 0 : if (self::$yyTraceFILE) {
2473 0 : fprintf(self::$yyTraceFILE, "%sFail!\n", self::$yyTracePrompt);
2474 0 : }
2475 0 : while ($this->yyidx >= 0) {
2476 0 : $this->yy_pop_parser_stack();
2477 0 : }
2478 : /* Here code is inserted which will be executed whenever the
2479 : ** parser fails */
2480 0 : }
2481 :
2482 : /**
2483 : * The following code executes when a syntax error first occurs.
2484 : *
2485 : * %syntax_error code is inserted here
2486 : * @param int The major type of the error token
2487 : * @param mixed The minor type of the error token
2488 : */
2489 : function yy_syntax_error($yymajor, $TOKEN)
2490 : {
2491 : #line 60 "internal.templateparser.y"
2492 :
2493 1 : $this->internalError = true;
2494 1 : $this->yymajor = $yymajor;
2495 1 : $this->compiler->trigger_template_error();
2496 : #line 2502 "internal.templateparser.php"
2497 0 : }
2498 :
2499 : /**
2500 : * The following is executed when the parser accepts
2501 : *
2502 : * %parse_accept code is inserted here
2503 : */
2504 : function yy_accept()
2505 : {
2506 329 : if (self::$yyTraceFILE) {
2507 0 : fprintf(self::$yyTraceFILE, "%sAccept!\n", self::$yyTracePrompt);
2508 0 : }
2509 329 : while ($this->yyidx >= 0) {
2510 329 : $stack = $this->yy_pop_parser_stack();
2511 329 : }
2512 : /* Here code is inserted which will be executed whenever the
2513 : ** parser accepts */
2514 : #line 52 "internal.templateparser.y"
2515 :
2516 329 : $this->successful = !$this->internalError;
2517 329 : $this->internalError = false;
2518 329 : $this->retvalue = $this->_retvalue;
2519 : //echo $this->retvalue."\n\n";
2520 : #line 2527 "internal.templateparser.php"
2521 329 : }
2522 :
2523 : /**
2524 : * The main parser program.
2525 : *
2526 : * The first argument is the major token number. The second is
2527 : * the token value string as scanned from the input.
2528 : *
2529 : * @param int the token number
2530 : * @param mixed the token value
2531 : * @param mixed any extra arguments that should be passed to handlers
2532 : */
2533 : function doParse($yymajor, $yytokenvalue)
2534 : {
2535 : // $yyact; /* The parser action. */
2536 : // $yyendofinput; /* True if we are at the end of input */
2537 343 : $yyerrorhit = 0; /* True if yymajor has invoked an error */
2538 :
2539 : /* (re)initialize the parser, if necessary */
2540 343 : if ($this->yyidx === null || $this->yyidx < 0) {
2541 : /* if ($yymajor == 0) return; // not sure why this was here... */
2542 343 : $this->yyidx = 0;
2543 343 : $this->yyerrcnt = -1;
2544 343 : $x = new TP_yyStackEntry;
2545 343 : $x->stateno = 0;
2546 343 : $x->major = 0;
2547 343 : $this->yystack = array();
2548 343 : array_push($this->yystack, $x);
2549 343 : }
2550 343 : $yyendofinput = ($yymajor==0);
2551 :
2552 343 : if (self::$yyTraceFILE) {
2553 0 : fprintf(self::$yyTraceFILE, "%sInput %s\n",
2554 0 : self::$yyTracePrompt, $this->yyTokenName[$yymajor]);
2555 0 : }
2556 :
2557 : do {
2558 343 : $yyact = $this->yy_find_shift_action($yymajor);
2559 343 : if ($yymajor < self::YYERRORSYMBOL &&
2560 343 : !$this->yy_is_expected_token($yymajor)) {
2561 : // force a syntax error
2562 0 : $yyact = self::YY_ERROR_ACTION;
2563 0 : }
2564 343 : if ($yyact < self::YYNSTATE) {
2565 343 : $this->yy_shift($yyact, $yymajor, $yytokenvalue);
2566 343 : $this->yyerrcnt--;
2567 343 : if ($yyendofinput && $this->yyidx >= 0) {
2568 0 : $yymajor = 0;
2569 0 : } else {
2570 343 : $yymajor = self::YYNOCODE;
2571 : }
2572 343 : } elseif ($yyact < self::YYNSTATE + self::YYNRULE) {
2573 342 : $this->yy_reduce($yyact - self::YYNSTATE);
2574 343 : } elseif ($yyact == self::YY_ERROR_ACTION) {
2575 1 : if (self::$yyTraceFILE) {
2576 0 : fprintf(self::$yyTraceFILE, "%sSyntax Error!\n",
2577 0 : self::$yyTracePrompt);
2578 0 : }
2579 1 : if (self::YYERRORSYMBOL) {
2580 : /* A syntax error has occurred.
2581 : ** The response to an error depends upon whether or not the
2582 : ** grammar defines an error token "ERROR".
2583 : **
2584 : ** This is what we do if the grammar does define ERROR:
2585 : **
2586 : ** * Call the %syntax_error function.
2587 : **
2588 : ** * Begin popping the stack until we enter a state where
2589 : ** it is legal to shift the error symbol, then shift
2590 : ** the error symbol.
2591 : **
2592 : ** * Set the error count to three.
2593 : **
2594 : ** * Begin accepting and shifting new tokens. No new error
2595 : ** processing will occur until three tokens have been
2596 : ** shifted successfully.
2597 : **
2598 : */
2599 1 : if ($this->yyerrcnt < 0) {
2600 1 : $this->yy_syntax_error($yymajor, $yytokenvalue);
2601 0 : }
2602 0 : $yymx = $this->yystack[$this->yyidx]->major;
2603 0 : if ($yymx == self::YYERRORSYMBOL || $yyerrorhit ){
2604 0 : if (self::$yyTraceFILE) {
2605 0 : fprintf(self::$yyTraceFILE, "%sDiscard input token %s\n",
2606 0 : self::$yyTracePrompt, $this->yyTokenName[$yymajor]);
2607 0 : }
2608 0 : $this->yy_destructor($yymajor, $yytokenvalue);
2609 0 : $yymajor = self::YYNOCODE;
2610 0 : } else {
2611 0 : while ($this->yyidx >= 0 &&
2612 0 : $yymx != self::YYERRORSYMBOL &&
2613 0 : ($yyact = $this->yy_find_shift_action(self::YYERRORSYMBOL)) >= self::YYNSTATE
2614 0 : ){
2615 0 : $this->yy_pop_parser_stack();
2616 0 : }
2617 0 : if ($this->yyidx < 0 || $yymajor==0) {
2618 0 : $this->yy_destructor($yymajor, $yytokenvalue);
2619 0 : $this->yy_parse_failed();
2620 0 : $yymajor = self::YYNOCODE;
2621 0 : } elseif ($yymx != self::YYERRORSYMBOL) {
2622 0 : $u2 = 0;
2623 0 : $this->yy_shift($yyact, self::YYERRORSYMBOL, $u2);
2624 0 : }
2625 : }
2626 0 : $this->yyerrcnt = 3;
2627 0 : $yyerrorhit = 1;
2628 0 : } else {
2629 : /* YYERRORSYMBOL is not defined */
2630 : /* This is what we do if the grammar does not define ERROR:
2631 : **
2632 : ** * Report an error message, and throw away the input token.
2633 : **
2634 : ** * If the input token is $, then fail the parse.
2635 : **
2636 : ** As before, subsequent error messages are suppressed until
2637 : ** three input tokens have been successfully shifted.
2638 : */
2639 0 : if ($this->yyerrcnt <= 0) {
2640 0 : $this->yy_syntax_error($yymajor, $yytokenvalue);
2641 0 : }
2642 0 : $this->yyerrcnt = 3;
2643 0 : $this->yy_destructor($yymajor, $yytokenvalue);
2644 0 : if ($yyendofinput) {
2645 0 : $this->yy_parse_failed();
2646 0 : }
2647 0 : $yymajor = self::YYNOCODE;
2648 : }
2649 0 : } else {
2650 0 : $this->yy_accept();
2651 0 : $yymajor = self::YYNOCODE;
2652 : }
2653 343 : } while ($yymajor != self::YYNOCODE && $this->yyidx >= 0);
2654 343 : }
2655 : }
|